Quantifier-free logical transductions #
String-to-string logical transductions in the quantifier-free fragment ([Cha14a],
[CJ19]): a map defined by a copy set and, per copy, an ordered list of
guarded output clauses, where each guard is a Subregular.QF formula at the input position. A
copy set of size k lets the output be larger than the input (insertion); guards that match
nothing delete; relabelling copies rewrite a symbol in place.
We formalize the order-preserving fragment: the output is read off in the order
(input position, copy index), so the output successor is induced rather than given by an
explicit successor formula. This is exactly the fragment relevant to strict locality —
relabelling, deletion, and insertion. Non-order-preserving maps (reordering via an explicit
output successor) are the non-local extension and are deliberately out of scope here.
Composition of transductions (applyComp) models an iterated derivation: each step is a local
transduction, though the composite is not in general itself quantifier-free.
Main definitions #
Subregular.Transduction: copy count + per-copy guarded output clauses.Transduction.apply: run a transduction, producing the output string (computable).Transduction.applyComp: composition of two transductions (one cyclic derivation step on top of another).Transduction.LeftLocal: every guard backward-bounded byr.
Main results #
Transduction.emitAt_eq_of_agree: a left-local transduction emits the same block at positions whose bounded left contexts agree.
Implementation notes #
A clause is a quantifier-free guard paired with an output symbol; per copy, the first clause
whose guard holds at the input position fires, and a copy with no firing clause is absent.
apply is a flatMap over input positions then copies, so it reduces under decide.
A per-copy output clause: a quantifier-free guard at the input position and the output symbol emitted when it is the first matching clause.
Equations
- Subregular.Clause α β = (Subregular.QF α × β)
Instances For
A quantifier-free order-preserving logical transduction: copies output copies of each input
position, and for each copy an ordered list of guarded output clauses.
- copies : ℕ
Instances For
The output symbols emitted at input position n (one per copy whose guard fires, in copy
order).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run the transduction: emit, left to right, the licensed copies of every input position.
Instances For
Composition of transductions — one cyclic derivation step after another; the composite is not in general itself quantifier-free.
Instances For
Left-local transductions #
A transduction is left-local with radius r if every clause guard is backward-bounded by
r: the output at a position is determined by that position and the r symbols before it.
Equations
- Subregular.Transduction.LeftLocal r T = ∀ (c : Fin T.copies) (cl : Subregular.Clause α β), cl ∈ T.clause c → Subregular.QF.BackBounded r cl.fst
Instances For
A left-local transduction emits the same block at positions whose bounded left contexts agree: every clause guard is backward-bounded, so its firing is determined by that context.
Worked examples: feature change, deletion, epenthesis, and a cycle #
Equations
- Subregular.instDecidableEqSym_1 x✝ y✝ = if h : Subregular.Sym.ctorIdx✝ x✝ = Subregular.Sym.ctorIdx✝ y✝ then isTrue ⋯ else isFalse ⋯