The locality bridge: left-local ⟹ input strictly local #
A local transduction whose guards look only at a bounded left context is input strictly
local: a transduction that is LeftLocal r (guards backward-bounded by r) is
IsLeftInputStrictlyLocal (r + 1).
The mathematical crux is upstream (Transduction.emitAt_eq_of_agree, resting on
Term.eval_backward): a left-local transduction emits the same block at positions whose bounded
left contexts agree. This file threads that fact through the ISL window: the window maintained by
ISLRule.applyAux stays exactly the bounded left context, so the induced rule reproduces the
transduction's output.
Main results #
Transduction.toISLRule: the ISL rule induced by a left-local transduction.Transduction.leftLocal_isLeftISL: aLeftLocal rtransduction is(r+1)-Left-Input-Strictly-Local.
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 bridge (left half): 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.instDecidableEqSym_2 x✝ y✝ = if h : Subregular.Sym.ctorIdx✝ x✝ = Subregular.Sym.ctorIdx✝ y✝ then isTrue ⋯ else isFalse ⋯