Input strictly local functions #
This file defines the input strictly local functions. A function f : List α → List β is
k-input strictly local (k-ISL) when the block it emits for each input symbol depends only
on that symbol and the k - 1 input symbols before it. Chandlee introduced the class for the
local phonological processes that apply simultaneously, such as substitution, epenthesis,
deletion and metathesis, and Chandlee, Eyraud and Heinz characterize it by tails. We compute ISL
functions by rules, show that a function is k-ISL exactly when its residuals factor through
the last k - 1 input symbols, and prove that the classes nest in k, begin at k = 1 with the
letterwise homomorphisms, and are subsequential over a finite alphabet.
Main definitions #
ISLRule k α β: a rule emitting a block from a window ofk - 1input symbolsISLRule.apply: the function a rule computesIsLeftInputStrictlyLocal k f,IsRightInputStrictlyLocal k f: some rule computesf, scanning left to right or right to left
Main results #
isLeftInputStrictlyLocal_iff_factorsThrough_residual: characterization by residualsIsLeftInputStrictlyLocal.weaken:k-ISL functions arek'-ISL fork ≤ k'isLeftInputStrictlyLocal_one_iff: the1-ISL functions are the letterwise homomorphismsIsLeftInputStrictlyLocal.isLeftSubsequential: ISL functions are subsequential
Implementation notes #
Rules carry neither the initial nor the final output of Chandlee, Eyraud and Heinz's
transducers, so the classes are the sequential ones with f [] = []; final devoicing, left-ISL
there through a final output, is right-ISL here. 0-ISL and 1-ISL coincide, and k indexes
apply alone.
References #
A k-input strictly local rule emits, for each input symbol, a block of output symbols
computed from the last k - 1 input symbols and the symbol itself.
- windowOutput : List α → α → List β
The block emitted for the current symbol after the given window of preceding input.
Instances For
The rule applied from a given window, the window recursion windowRun that accumulates the
input truncated to k - 1 symbols.
Equations
- r.applyAux = SubsequentialTransducer.windowRun (k - 1) r.windowOutput fun (x : List α) (x_1 : α) => [x_1]
Instances For
The window before each symbol is the last k - 1 symbols of the input read so far.
f is k-left-input strictly local if some k-ISL rule computes it.
Equations
- Subregular.IsLeftInputStrictlyLocal k f = ∃ (r : Subregular.ISLRule k α β), r.apply = f
Instances For
f is k-right-input strictly local if its reverse-conjugate is k-left-ISL, that is,
if some k-ISL rule computes it scanning right to left.
Equations
Instances For
Residuals #
The residuals of a k-ISL function factor through the last k - 1 input symbols, so inputs
ending alike have the same continuations.
A function is k-ISL if and only if it fixes [], is prefix-preserving, and has residuals
factoring through the last k - 1 input symbols.
The hierarchy in k #
A k-ISL function is k'-ISL for every k' ≥ k.
The 1-ISL functions are the letterwise homomorphisms List.flatMap h, among them the
erasing projections List.filterMap g.
ISL ⊆ Subsequential #
An ISL rule is a window recursion accumulating the input, so over a finite input alphabet the
bounded input window is a finite state space (isLeftSubsequential_windowRun).
Over a finite input alphabet, left-ISL functions are left-subsequential.
A rule emitting one symbol per input symbol is Mealy-computable, the bounded input window being the state.
Over a finite input alphabet, right-ISL functions are right-subsequential.