The locality bridge: quantifier-free ⟹ strictly local #
The load-bearing subregular result ([Cha14a], [CJ19]): a quantifier-free
logical transduction whose guards look only at a bounded context is strictly local. Here we
prove the left-directed half against Subregular's
IsLeftInputStrictlyLocal: a transduction whose guards are backward (built from the variable
and predecessors, no successor) with predecessor depth ≤ r is IsLeftInputStrictlyLocal (r + 1).
The mathematical crux is Term.eval_backward: a backward term of predecessor depth j, evaluated
at position n, reads exactly position n - j (or falls off the left edge). Hence the truth of a
backward guard at n depends only on the r + 1 symbols ending at n — the ISL window.
Main definitions #
Term.Backward/Term.pdepth— successor-free terms and their predecessor depth.Atom.Backward/QF.Backward/Transduction.LeftLocal— the bounded-left-context classes.
Main results #
Term.eval_backward— a backward term of depthjat positionnevaluates ton - j.Transduction.leftLocal_isLeftISL— a backward-bounded (radiusr) transduction is(r+1)-Left-Input-Strictly-Local.
Backward terms #
Term.Backward and Term.pdepth live with the Term API in Logic/QFLogic.lean.
A backward term of predecessor depth j, evaluated at position n (in range), reads exactly
position n - j — defined iff j ≤ n.
Bounded-left-context formulas and transductions #
An atom is backward-bounded by r if every term it uses is backward with predecessor depth
≤ r (so it reads only the r + 1 symbols ending at the variable).
Equations
- Subregular.Logic.Atom.BackBounded r (Subregular.Logic.Atom.label a t) = (t.Backward ∧ t.pdepth ≤ r)
- Subregular.Logic.Atom.BackBounded r (Subregular.Logic.Atom.eq t₁ t₂) = ((t₁.Backward ∧ t₁.pdepth ≤ r) ∧ t₂.Backward ∧ t₂.pdepth ≤ r)
- Subregular.Logic.Atom.BackBounded r (Subregular.Logic.Atom.defined t) = (t.Backward ∧ t.pdepth ≤ r)
Instances For
A quantifier-free formula is backward-bounded by r if all its atoms are.
Equations
- Subregular.Logic.QF.BackBounded r (Subregular.Logic.QF.atom a) = Subregular.Logic.Atom.BackBounded r a
- Subregular.Logic.QF.BackBounded r Subregular.Logic.QF.tru = True
- Subregular.Logic.QF.BackBounded r Subregular.Logic.QF.fls = True
- Subregular.Logic.QF.BackBounded r φ.neg = Subregular.Logic.QF.BackBounded r φ
- Subregular.Logic.QF.BackBounded r (φ.conj ψ) = (Subregular.Logic.QF.BackBounded r φ ∧ Subregular.Logic.QF.BackBounded r ψ)
- Subregular.Logic.QF.BackBounded r (φ.disj ψ) = (Subregular.Logic.QF.BackBounded r φ ∧ Subregular.Logic.QF.BackBounded r ψ)
Instances For
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.Logic.Transduction.LeftLocal r T = ∀ (c : Fin T.copies), ∀ cl ∈ T.clause c, Subregular.Logic.QF.BackBounded r cl.1
Instances For
The Left-ISL rule induced by a left-local transduction of radius r: read the output block at
each position from the last r input symbols (window) and the current symbol x, by running the
transduction's emitAt on window ++ [x] at its final position.
Equations
Instances For
Locality of emitAt and the window-threading invariant #
The bridge reduces to two facts: a backward-bounded guard reads only the r + 1 symbols ending at
its position (emitAt agrees on positions with matching bounded left context), and the ISL window
threaded by applyAux stays exactly that bounded left context.
Locality bridge (left half), [Cha14a], [CJ19]: a transduction whose
guards look only backward with predecessor depth ≤ r is (r+1)-Left-Input-Strictly-Local — its
output depends on a bounded left window, the defining property of strict locality.
Worked example: the bridge on a concrete left-local process #
Equations
- Subregular.Logic.instDecidableEqSym_2 x✝ y✝ = if h : Subregular.Logic.Sym.ctorIdx✝ x✝ = Subregular.Logic.Sym.ctorIdx✝ y✝ then isTrue ⋯ else isFalse ⋯