Strictly Local Languages (SL_k) #
A language L is strictly k-local when membership in L is
determined by which length-k substrings the boundary-augmented form of
the input contains @cite{rogers-pullum-2011} @cite{lambert-2022}. The two
equivalent presentations are:
- Positive: a set
Gof permittedk-factors.w ∈ Liff everyk-factor ofboundary k wis inG. - Negative: a set
Fof forbiddenk-factors.w ∈ Liff nok-factor ofboundary k wis inF.
The negative form is what most phonological accounts use (forbidden bigrams, forbidden trigrams), since it is finite even when the alphabet is infinite.
Main definitions #
SLGrammar k α— a positivek-grammar over alphabetα.SLGrammar.lang— theLanguage α(mathlib type) it generates.SLGrammar.ofForbidden— convert a forbidden-factor set to the equivalent positive grammar.IsStrictlyLocal k L— the property that aLanguage αis strictlyk-local for a givenk.
A strictly k-local grammar over α: a set of permitted
length-k factors over the boundary-augmented alphabet Option α
(with none as the boundary).
- permitted : Set (Augmented α)
The set of permitted
k-factors. Factors not listed here are forbidden in any string of the language.
Instances For
Equations
- Core.Computability.Subregular.SLGrammar.instInhabited = { default := { permitted := Set.univ } }
The language generated by an SL grammar: strings whose
boundary-augmented form has every k-factor in permitted.
Equations
- G.lang w = ∀ f ∈ Core.Computability.Subregular.kFactors k (Core.Computability.Subregular.boundary k w), f ∈ G.permitted
Instances For
An SL grammar from a forbidden-factor set. The permitted set is
the complement; equivalently, a string is accepted iff none of its
k-factors are in forbidden.
Equations
- Core.Computability.Subregular.SLGrammar.ofForbidden forbidden = { permitted := forbiddenᶜ }
Instances For
A language L is strictly k-local iff some SLGrammar k α
generates exactly L. This is the witness-style definition (cf.
"L is regular iff some DFA accepts L" in Mathlib.Computability.DFA).
Equations
- Core.Computability.Subregular.IsStrictlyLocal k L = ∃ (G : Core.Computability.Subregular.SLGrammar k α), G.lang = L
Instances For
Every SL grammar witnesses IsStrictlyLocal for its language.