Forbidden-pair constraints #
This file defines the forbidden-pair constraints on strings, which carry genuine adjacency logic:
Constraint.forbidPairs R, with one violation for each adjacent pair (a, b) satisfying R a b,
and its identity and non-identity instances, the OCP ([Gol76], [McC86]) and
AGREE. A constraint on candidates of another type, or on a tier, is not a separate constructor
but the Constraint.comap of a string constraint along the candidate's string or along erasure
of the off-tier symbols. Pulled back along the output form of a correspondence candidate, a
string constraint is a markedness constraint (Correspondence.isMarkedness_iff_exists_comap).
On a tier, the zero set of Constraint.forbidPairs R is the tier-based strictly 2-local language
of TierStrictlyLocalGrammar.ofForbiddenPairs R p ([HRT11]). The OCP and AGREE
instances of this bridge are in Subregular/OCP.lean and Subregular/Agree.lean.
Main definitions #
Constraint.forbidPairs,Constraint.ocp,Constraint.agree: the forbidden-pair constraints on strings.Constraint.zeroSet: the zero-violation language of a constraint on strings.
Main results #
Constraint.zeroSet_comap: pulling a constraint back pulls its zero set back.Constraint.zeroSet_comap_filter_forbidPairs: on a tier, the zero set of the forbidden-pair constraint is the TSL₂ language ofofForbiddenPairs.
Implementation notes #
Constraint.ocp and Constraint.agree compare whole symbols. Over segments, ocp is the
identity OCP rather than OCP-Place, and agree is AGREE[F] only after the string is projected
to the values of the feature F.
References #
The forbidden-pair constraint on strings, with one violation for each adjacent pair (a, b)
satisfying R a b.
Equations
Instances For
The OCP ([Gol76], [McC86]), the forbidden-pair constraint against adjacent identical elements, polymorphic over the feature type ([Ber26]).
Equations
- OptimalityTheory.Constraint.ocp = OptimalityTheory.Constraint.forbidPairs fun (x1 x2 : α) => x1 = x2
Instances For
AGREE, the forbidden-pair constraint against adjacent distinct elements and the dual of
Constraint.ocp.
Equations
- OptimalityTheory.Constraint.agree = OptimalityTheory.Constraint.forbidPairs fun (x1 x2 : α) => x1 ≠ x2
Instances For
The language of strings that satisfy c, with zero violations. It lets the eval = 0
predicate compose with Language.IsRegular and the subregular classes (IsTierStrictlyLocal,
IsBTC).
Equations
- c.zeroSet = {w : List α | c w = 0}
Instances For
Pulling a constraint back along a string map pulls its zero set back.
A string satisfies the forbidden-pair constraint iff no two adjacent elements are
R-related.
On the tier p, the zero set of the forbidden-pair constraint is the language of the TSL₂
grammar TierStrictlyLocalGrammar.ofForbiddenPairs R p.