Correspondence Theory #
Correspondence diagrams and their faithfulness constraints. A Corr Role α
gives each role a string (form) and each ordered role pair a correspondence
relation edge between positions. Each faithfulness constraint is a map
Corr Role α → Role → Role → ℕ.
Following [McCP95] (Def. 10), edge r₁ r₂ is the directed
relation ℛ ⊆ S₁ × S₂ that every constraint reads (MAX off its Domain, DEP off
its Range, …). Symmetry — "correspondents of one another" — is a derived
property (IsSymmetric, proved of the constructors), not built into the type,
since M&P's ℛ is a directed subset. The position-relation encoding follows the
model-theoretic treatment of [PVH17] and
[PP02] (reduplicative B-R: [DH20]).
Main definitions #
Corr— a correspondence diagram (formplus the directed relationedge).Corr.maxViol,depViol,identViol,linearityViol,contigIViol,anchorLViol,integrityViol,uniformityViol— the faithfulness families; named constraints are partial applications (MAX-IOisc.maxViol .input .output).Corr.diagram— the universal constructor;parallel,identity,reduplicationare diagonal specializations.Corr.IsSymmetric— correspondence symmetry, derived for the constructors.Corr.RoleQuiv— the labeled-quiver structure onRole.
Main results #
Corr.IsFaithful— the conjunction of the five order-relevant zeros (MAX, DEP, INTEGRITY, UNIFORMITY, LINEARITY).Corr.isFaithful_iff_exists_orderIso— a correspondence is faithful iff its edge is the graph of an order isomorphism between the two position orders.Corr.exists_orderIso_of_faithful— the forward direction (the converse of theidentity_*_zerolemmas).
Binary and ternary roles #
Roles for a binary correspondence (Corr.parallel, Corr.identity).
Instances For
Equations
- OptimalityTheory.Correspondence.instDecidableEqSide x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Roles for a reduplicative correspondence: input, base, reduplicant
([McCP95]); used by Corr.reduplication.
Instances For
Equations
- OptimalityTheory.Correspondence.instDecidableEqRedupRole x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The correspondence diagram #
Correspondence is symmetric — "correspondents of one another"
([McCP95] Def. 10): each relation is the converse of
the reverse one. A derived property (diagram_isSymmetric), not a field.
Equations
- c.IsSymmetric = ∀ (r₁ r₂ : Role), c.edge r₂ r₁ = Finset.image Prod.swap (c.edge r₁ r₂)
Instances For
Constraint families #
IDENT ([McCP95] A.3): corresponding pairs whose segments
differ. IDENT-OO is OO-faithfulness ([Ben97], [McC05],
[Rol18]). Each coordinate of a correspondence pair is a Fin
in range, so (form r₁)[p.1] is the total indexed lookup (no Option).
See identViolFeature for the feature-by-feature variant.
Instances For
Featural IDENT ([McCP95] A.3): corresponding pairs
differing under proj ([Ben97], [RW11]).
Equations
- OptimalityTheory.Correspondence.Corr.identViolFeature proj c r₁ r₂ = {p ∈ c.edge r₁ r₂ | proj (c.form r₁)[p.1] ≠ proj (c.form r₂)[p.2]}.card
Instances For
Contiguity #
A ℕ-list is contiguous iff consecutive elements differ by 1.
Equations
- OptimalityTheory.Correspondence.Corr.IsContiguous l = List.IsChain (fun (a b : ℕ) => b = a + 1) l
Instances For
Equations
- OptimalityTheory.Correspondence.Corr.instDecidableIsContiguous l = l.instDecidableIsChainOfDecidableRel
I-CONTIGUITY "No Skipping" ([McCP95] A.4a): the domain
of correspondence is contiguous in form r₁. The Fin-valued domain is
projected to its ℕ values and sorted before the chain check.
Equations
- One or more equations did not get rendered due to their size.
Instances For
O-CONTIGUITY "No Intrusion" ([McCP95] A.4b): the range
of correspondence is contiguous in form r₂.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Anchors #
L-ANCHOR ([McCP95] A.5): leftmost positions correspond.
When either form is empty there is no leftmost position, so the constraint
is vacuously satisfied; otherwise the Fin endpoints are the two 0s.
Equations
- c.anchorLViol r₁ r₂ = if h : (c.form r₁).length = 0 ∨ (c.form r₂).length = 0 then 0 else have h₁ := ⋯; have h₂ := ⋯; if (⟨0, h₁⟩, ⟨0, h₂⟩) ∈ c.edge r₁ r₂ then 0 else 1
Instances For
R-ANCHOR ([McCP95] A.5): rightmost positions correspond.
The Fin endpoints are the two Fin.lasts when both forms are nonempty.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Linearity, uniformity, integrity #
LINEARITY "No Metathesis" ([McCP95] A.6): the count of
inversion pairs (i₁,j₁), (i₂,j₂) ∈ edge with i₁ < i₂ but j₂ < j₁
(coordinates compared via Fin.lt).
Equations
- c.linearityViol r₁ r₂ = {pq ∈ c.edge r₁ r₂ ×ˢ c.edge r₁ r₂ | pq.1.1 < pq.2.1 ∧ pq.2.2 < pq.1.2}.card
Instances For
UNIFORMITY "No Coalescence" ([McCP95] A.7): the count of
form r₂ positions with more than one correspondent in form r₁.
Equations
- c.uniformityViol r₁ r₂ = {j : Fin (c.form r₂).length | {p ∈ c.edge r₁ r₂ | p.2 = j}.card > 1}.card
Instances For
INTEGRITY "No Breaking" ([McCP95] A.8): the count of
form r₁ positions with more than one correspondent in form r₂.
Equations
- c.integrityViol r₁ r₂ = {i : Fin (c.form r₁).length | {p ∈ c.edge r₁ r₂ | p.1 = i}.card > 1}.card
Instances For
Faithfulness predicate bridges #
Each cardinal constraint vanishes iff the correspondence has the corresponding
order-theoretic property (maxViol = 0 ⟺ left-total, etc.). These are the
named characterizations the order-isomorphism theorem is assembled from.
Universal constructors #
The parallel-pair diagonal in Fin-coordinates: (0,0), (1,1), … up to
min m n, each index cast up into the two position types via Fin.castLE.
Equations
- OptimalityTheory.Correspondence.Corr.diagDiag m n = Finset.image (fun (i : Fin (min m n)) => (Fin.castLE ⋯ i, Fin.castLE ⋯ i)) Finset.univ
Instances For
Membership in the diagonal: (a, b) ∈ diagDiag m n iff the two indices
have equal underlying values.
The diagonal has min m n pairs — one per index of the shorter form.
Universal constructor: where hasEdge holds, the parallel-pair
correspondence (0,0), (1,1), … truncated to min of the two lengths;
elsewhere none. For non-parallel structure (infixation, re-alignment)
build edge directly (e.g. Benua1997.diagramWithEdge).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A diagram over a symmetric predicate is a symmetric correspondence —
symmetry derived, not stipulated.
Parallel-pair correspondence between two strings, truncated to the
shorter (List.zip semantics).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The fully-faithful candidate: identity correspondence on one string ([McCP95]).
Equations
Instances For
Identity-correspondence zero lemmas #
MAX vanishes on a diagonal edge between equal forms: if c.edge r₁ r₂
is the parallel-pair diagonal and c.form r₁ = c.form r₂, every r₁
position has a correspondent. The role-agnostic core of identity_max_zero
— it also fires for total reduplication (r₁, r₂ the base/reduplicant roles
with equal forms).
DEP vanishes on a diagonal edge between equal forms — the dual of
maxViol_eq_zero_of_diag: every r₂ position has a correspondent.
IDENT vanishes on a diagonal edge between equal forms: corresponding
positions hold the same segment. Unlike MAX/DEP, this needs
c.form r₁ = c.form r₂, not just equal length — an order-isomorphic edge
between distinct strings can still violate IDENT.
Featural IDENT vanishes on a diagonal edge between equal forms — the
proj-relativized form of identViol_eq_zero_of_diag.
Faithfulness as order-isomorphism #
The five order-relevant zeros bundled: a correspondence is faithful
(on the (r₁, r₂) edge) when it has no MAX, DEP, INTEGRITY, UNIFORMITY,
or LINEARITY violation ([McCP95] (A.1), (A.2), (A.6),
(A.7), (A.8)). This is exactly the hypothesis set under which the edge is
the graph of an order isomorphism.
- max : c.maxViol r₁ r₂ = 0
- dep : c.depViol r₁ r₂ = 0
- integrity : c.integrityViol r₁ r₂ = 0
- uniformity : c.uniformityViol r₁ r₂ = 0
- linearity : c.linearityViol r₁ r₂ = 0
Instances For
Faithful ⟺ order-isomorphism. A correspondence is faithful (no MAX,
DEP, INTEGRITY, UNIFORMITY, or LINEARITY violation) iff its edge is the
graph of an order isomorphism between the two position orders. The forward
direction is the converse of the identity_*_zero lemmas, and the formal
content of M&P's fully-faithful candidate being the identity.
Faithful ⟹ order-isomorphism (the forward direction of
isFaithful_iff_exists_orderIso).
A faithful correspondence forces equal lengths (no deletion, no epenthesis).
Constraint bridges #
Corr-violation functions packaged as bare Constraint (Corr Role α) (= Corr Role α → ℕ). The faithfulness/markedness family is recovered structurally below
(VanishesOnIdentity / IsMarkedness), not stamped by a tag.
IDENT over a Corr: featural-identity violations between roles r₁, r₂.
Equations
- OptimalityTheory.Correspondence.Corr.toIdentConstraint r₁ r₂ c = c.identViol r₁ r₂
Instances For
IDENT[F] over a Corr: violations of the feature picked out by proj.
Equations
- OptimalityTheory.Correspondence.Corr.toIdentFeatureConstraint proj r₁ r₂ c = OptimalityTheory.Correspondence.Corr.identViolFeature proj c r₁ r₂
Instances For
MAX over a Corr: deletion (input segments lacking a correspondent).
Equations
- OptimalityTheory.Correspondence.Corr.toMaxConstraint r₁ r₂ c = c.maxViol r₁ r₂
Instances For
DEP over a Corr: epenthesis (output segments lacking a correspondent).
Equations
- OptimalityTheory.Correspondence.Corr.toDepConstraint r₁ r₂ c = c.depViol r₁ r₂
Instances For
Faithfulness of the bridges: vanishing on the faithful candidate #
The MAX/DEP/IDENT bridges assign zero violations to the fully faithful candidate
identity s — the defining behaviour of a Correspondence-Theory faithfulness
constraint ([McCP95]). This is the structural faithfulness now
captured by VanishesOnIdentity (there is no .faithfulness tag). Markedness is
non-vacuously different (exists_markedness_not_vanishesOnIdentity).
Anti-faithfulness ([Ald01]) is out of scope — it demands disparity and is
maximal on identity.
A correspondence constraint vanishes on the faithful candidate — scores no
violations on any fully faithful identity s. This is the structural
definition of a faithfulness constraint ([McCP95]), replacing the
old .faithfulness tag.
Equations
- OptimalityTheory.Correspondence.Corr.VanishesOnIdentity c = ∀ (s : List α), c (OptimalityTheory.Correspondence.Corr.identity s) = 0
Instances For
A correspondence constraint is markedness when it depends only on the out
form — it scores equal violations on candidates agreeing on · .form out. The
structural dual of VanishesOnIdentity, replacing the old .markedness tag.
Equations
- OptimalityTheory.Correspondence.Corr.IsMarkedness out c = ∀ (c₁ c₂ : OptimalityTheory.Correspondence.Corr Role α), c₁.form out = c₂.form out → c c₁ = c c₂
Instances For
Markedness need not vanish on the faithful candidate. *Struc (one
violation per output segment) is markedness yet fires on identity s, so the
faith/mark split is non-vacuous — and structural, not tag-based.
Reduplication constraints #
The canonical [McCP95] reduplicative-faithfulness constraints as
Constraint (Corr RedupRole α); study files import these names rather than
re-rolling Corr.toMaxConstraint .input .base.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Quiver structure #
The labeled-quiver structure on Role: morphisms r₁ ⟶ r₂ are the
correspondence pairs (i, j) ∈ c.edge r₁ r₂. Carried by a value-indexed
newtype since the instance depends on c; path-based (stratal, OT-CC)
evaluation via Quiver.Path is not yet formalised.
Equations
- x✝.RoleQuiv = Role
Instances For
Equations
- c.instQuiverRoleQuiv = { Hom := fun (r₁ r₂ : c.RoleQuiv) => ↥(c.edge r₁ r₂) }