Documentation

Linglib.Phonology.OptimalityTheory.Correspondence

Correspondence Theory #

[McCP95] [Ben97]

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 #

Main results #

Binary and ternary roles #

Roles for a binary correspondence (Corr.parallel, Corr.identity).

Instances For
    @[implicit_reducible]
    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
        @[implicit_reducible]
        Equations
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The correspondence diagram #

          structure OptimalityTheory.Correspondence.Corr (Role : Type u_1) (α : Type u_2) :
          Type (max u_1 u_2)

          A correspondence diagram: role-indexed forms and a directed correspondence relation edge between positions ([McCP95] Def. 10). The in-range bound is carried by the Fin-indexed type of edge rather than a separate well-formedness field.

          • form : RoleList α
          • edge (r₁ r₂ : Role) : Finset (Fin (self.form r₁).length × Fin (self.form r₂).length)
          Instances For
            def OptimalityTheory.Correspondence.Corr.IsSymmetric {Role : Type u_1} {α : Type u_2} (c : Corr Role α) :

            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 #

              def OptimalityTheory.Correspondence.Corr.maxViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

              MAX ([McCP95] A.1): the count of form r₁ positions with no correspondent in form r₂. MAX-OO is basemap faithfulness ([Ben97]).

              Equations
              • c.maxViol r₁ r₂ = (Finset.univ \ Finset.image Prod.fst (c.edge r₁ r₂)).card
              Instances For
                def OptimalityTheory.Correspondence.Corr.depViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                DEP ([McCP95] A.2): the count of form r₂ positions with no correspondent in form r₁. DEP-IO prohibits epenthesis.

                Equations
                • c.depViol r₁ r₂ = (Finset.univ \ Finset.image Prod.snd (c.edge r₁ r₂)).card
                Instances For
                  def OptimalityTheory.Correspondence.Corr.identViol {Role : Type u_1} {α : Type u_2} [DecidableEq α] (c : Corr Role α) (r₁ r₂ : Role) :

                  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.

                  Equations
                  Instances For
                    def OptimalityTheory.Correspondence.Corr.identViolFeature {Role : Type u_1} {α : Type u_2} {F : Type u_3} [DecidableEq F] (proj : αF) (c : Corr Role α) (r₁ r₂ : Role) :

                    Featural IDENT ([McCP95] A.3): corresponding pairs differing under proj ([Ben97], [RW11]).

                    Equations
                    Instances For

                      Contiguity #

                      @[reducible, inline]

                      A -list is contiguous iff consecutive elements differ by 1.

                      Equations
                      Instances For
                        @[implicit_reducible]
                        Equations
                        def OptimalityTheory.Correspondence.Corr.contigIViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                        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
                          def OptimalityTheory.Correspondence.Corr.contigOViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                          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 #

                            def OptimalityTheory.Correspondence.Corr.anchorLViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                            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
                              def OptimalityTheory.Correspondence.Corr.anchorRViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                              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 #

                                def OptimalityTheory.Correspondence.Corr.linearityViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                                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₂ = {pqc.edge r₁ r₂ ×ˢ c.edge r₁ r₂ | pq.1.1 < pq.2.1 pq.2.2 < pq.1.2}.card
                                Instances For
                                  def OptimalityTheory.Correspondence.Corr.uniformityViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                                  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 | {pc.edge r₁ r₂ | p.2 = j}.card > 1}.card
                                  Instances For
                                    def OptimalityTheory.Correspondence.Corr.integrityViol {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                                    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 | {pc.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.

                                      theorem OptimalityTheory.Correspondence.Corr.maxViol_eq_zero_iff {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                      c.maxViol r₁ r₂ = 0 Finset.univ Finset.image Prod.fst (c.edge r₁ r₂)
                                      theorem OptimalityTheory.Correspondence.Corr.depViol_eq_zero_iff {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                      c.depViol r₁ r₂ = 0 Finset.univ Finset.image Prod.snd (c.edge r₁ r₂)
                                      theorem OptimalityTheory.Correspondence.Corr.integrityViol_eq_zero_iff {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                      c.integrityViol r₁ r₂ = 0 ∀ (i : Fin (c.form r₁).length), {pc.edge r₁ r₂ | p.1 = i}.card 1
                                      theorem OptimalityTheory.Correspondence.Corr.uniformityViol_eq_zero_iff {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                      c.uniformityViol r₁ r₂ = 0 ∀ (j : Fin (c.form r₂).length), {pc.edge r₁ r₂ | p.2 = j}.card 1
                                      theorem OptimalityTheory.Correspondence.Corr.linearityViol_eq_zero_iff {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                      c.linearityViol r₁ r₂ = 0 pc.edge r₁ r₂, qc.edge r₁ r₂, p.1 < q.1¬q.2 < p.2

                                      Universal constructors #

                                      def OptimalityTheory.Correspondence.Corr.diagDiag (m n : ) :
                                      Finset (Fin m × Fin n)

                                      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
                                      Instances For
                                        theorem OptimalityTheory.Correspondence.Corr.mem_diagDiag {m n : } (a : Fin m) (b : Fin n) :
                                        (a, b) diagDiag m n a = b

                                        Membership in the diagonal: (a, b) ∈ diagDiag m n iff the two indices have equal underlying values.

                                        theorem OptimalityTheory.Correspondence.Corr.diagDiag_image_fst {m : } :
                                        Finset.image Prod.fst (diagDiag m m) = Finset.univ
                                        theorem OptimalityTheory.Correspondence.Corr.diagDiag_image_snd {m : } :
                                        Finset.image Prod.snd (diagDiag m m) = Finset.univ
                                        theorem OptimalityTheory.Correspondence.Corr.diagDiag_card (m n : ) :
                                        (diagDiag m n).card = min m n

                                        The diagonal has min m n pairs — one per index of the shorter form.

                                        def OptimalityTheory.Correspondence.Corr.diagram {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] :
                                        Corr Role α

                                        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
                                          @[simp]
                                          theorem OptimalityTheory.Correspondence.Corr.diagram_form {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] (r : Role) :
                                          (diagram form hasEdge).form r = form r
                                          theorem OptimalityTheory.Correspondence.Corr.diagram_edge {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] (r₁ r₂ : Role) :
                                          (diagram form hasEdge).edge r₁ r₂ = if hasEdge r₁ r₂ then diagDiag (form r₁).length (form r₂).length else
                                          theorem OptimalityTheory.Correspondence.Corr.diagram_edge_pos {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] {r₁ r₂ : Role} (h : hasEdge r₁ r₂) :
                                          (diagram form hasEdge).edge r₁ r₂ = diagDiag (form r₁).length (form r₂).length
                                          theorem OptimalityTheory.Correspondence.Corr.diagram_edge_neg {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] {r₁ r₂ : Role} (h : ¬hasEdge r₁ r₂) :
                                          (diagram form hasEdge).edge r₁ r₂ =
                                          theorem OptimalityTheory.Correspondence.Corr.diagram_isSymmetric {Role : Type u_1} {α : Type u_2} (form : RoleList α) (hasEdge : RoleRoleProp) [DecidableRel hasEdge] (hsymm : Symmetric hasEdge) :
                                          (diagram form hasEdge).IsSymmetric

                                          A diagram over a symmetric predicate is a symmetric correspondence — symmetry derived, not stipulated.

                                          def OptimalityTheory.Correspondence.Corr.parallel {α : Type u_2} (s₁ s₂ : List α) :

                                          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
                                              def OptimalityTheory.Correspondence.Corr.reduplication {α : Type u_2} (input base reduplicant : List α) :

                                              3-role input/base/reduplicant diagram with parallel-pair cross-role edges ([McCP95]).

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem OptimalityTheory.Correspondence.Corr.reduplication_isSymmetric {α : Type u_2} (input base reduplicant : List α) :
                                                (reduplication input base reduplicant).IsSymmetric
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.reduplication_form_input {α : Type u_2} (input base reduplicant : List α) :
                                                (reduplication input base reduplicant).form RedupRole.input = input
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.reduplication_form_base {α : Type u_2} (input base reduplicant : List α) :
                                                (reduplication input base reduplicant).form RedupRole.base = base
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.reduplication_form_reduplicant {α : Type u_2} (input base reduplicant : List α) :
                                                (reduplication input base reduplicant).form RedupRole.reduplicant = reduplicant

                                                Identity-correspondence zero lemmas #

                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.parallel_form_lhs {α : Type u_2} (s₁ s₂ : List α) :
                                                (parallel s₁ s₂).form Side.lhs = s₁
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.parallel_form_rhs {α : Type u_2} (s₁ s₂ : List α) :
                                                (parallel s₁ s₂).form Side.rhs = s₂
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.parallel_edge_diag {α : Type u_2} (s₁ s₂ : List α) (r : Side) :
                                                (parallel s₁ s₂).edge r r =
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.parallel_edge_lhs_rhs {α : Type u_2} (s₁ s₂ : List α) :
                                                (parallel s₁ s₂).edge Side.lhs Side.rhs = diagDiag s₁.length s₂.length
                                                @[simp]
                                                theorem OptimalityTheory.Correspondence.Corr.parallel_edge_rhs_lhs {α : Type u_2} (s₁ s₂ : List α) :
                                                (parallel s₁ s₂).edge Side.rhs Side.lhs = diagDiag s₂.length s₁.length
                                                theorem OptimalityTheory.Correspondence.Corr.maxViol_eq_zero_of_diag {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) (hform : c.form r₁ = c.form r₂) (hedge : c.edge r₁ r₂ = diagDiag (c.form r₁).length (c.form r₂).length) :
                                                c.maxViol r₁ r₂ = 0

                                                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).

                                                theorem OptimalityTheory.Correspondence.Corr.depViol_eq_zero_of_diag {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) (hform : c.form r₁ = c.form r₂) (hedge : c.edge r₁ r₂ = diagDiag (c.form r₁).length (c.form r₂).length) :
                                                c.depViol r₁ r₂ = 0

                                                DEP vanishes on a diagonal edge between equal forms — the dual of maxViol_eq_zero_of_diag: every r₂ position has a correspondent.

                                                theorem OptimalityTheory.Correspondence.Corr.identViol_eq_zero_of_diag {Role : Type u_1} {α : Type u_2} [DecidableEq α] (c : Corr Role α) (r₁ r₂ : Role) (hform : c.form r₁ = c.form r₂) (hedge : c.edge r₁ r₂ = diagDiag (c.form r₁).length (c.form r₂).length) :
                                                c.identViol r₁ r₂ = 0

                                                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.

                                                theorem OptimalityTheory.Correspondence.Corr.identViolFeature_eq_zero_of_diag {Role : Type u_1} {α : Type u_2} {F : Type u_3} [DecidableEq F] (proj : αF) (c : Corr Role α) (r₁ r₂ : Role) (hform : c.form r₁ = c.form r₂) (hedge : c.edge r₁ r₂ = diagDiag (c.form r₁).length (c.form r₂).length) :
                                                identViolFeature proj c r₁ r₂ = 0

                                                Featural IDENT vanishes on a diagonal edge between equal forms — the proj-relativized form of identViol_eq_zero_of_diag.

                                                theorem OptimalityTheory.Correspondence.Corr.identity_identFeature_zero {α : Type u_2} {F : Type u_3} [DecidableEq F] (proj : αF) (s : List α) :

                                                Faithfulness as order-isomorphism #

                                                structure OptimalityTheory.Correspondence.Corr.IsFaithful {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :

                                                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.

                                                Instances For
                                                  theorem OptimalityTheory.Correspondence.Corr.isFaithful_iff_exists_orderIso {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) :
                                                  c.IsFaithful r₁ r₂ ∃ (e : Fin (c.form r₁).length ≃o Fin (c.form r₂).length), ∀ (i : Fin (c.form r₁).length) (j : Fin (c.form r₂).length), (i, j) c.edge r₁ r₂ e i = j

                                                  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.

                                                  theorem OptimalityTheory.Correspondence.Corr.exists_orderIso_of_faithful {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) (hmax : c.maxViol r₁ r₂ = 0) (hdep : c.depViol r₁ r₂ = 0) (hint : c.integrityViol r₁ r₂ = 0) (huni : c.uniformityViol r₁ r₂ = 0) (hlin : c.linearityViol r₁ r₂ = 0) :
                                                  ∃ (e : Fin (c.form r₁).length ≃o Fin (c.form r₂).length), ∀ (i : Fin (c.form r₁).length) (j : Fin (c.form r₂).length), (i, j) c.edge r₁ r₂ e i = j

                                                  Faithful ⟹ order-isomorphism (the forward direction of isFaithful_iff_exists_orderIso).

                                                  theorem OptimalityTheory.Correspondence.Corr.length_eq_of_faithful {Role : Type u_1} {α : Type u_2} (c : Corr Role α) (r₁ r₂ : Role) (hmax : c.maxViol r₁ r₂ = 0) (hdep : c.depViol r₁ r₂ = 0) (hint : c.integrityViol r₁ r₂ = 0) (huni : c.uniformityViol r₁ r₂ = 0) (hlin : c.linearityViol r₁ r₂ = 0) :
                                                  (c.form r₁).length = (c.form r₂).length

                                                  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.

                                                  def OptimalityTheory.Correspondence.Corr.toIdentConstraint {Role : Type u_1} {α : Type u_2} [DecidableEq α] (r₁ r₂ : Role) :

                                                  IDENT over a Corr: featural-identity violations between roles r₁, r₂.

                                                  Equations
                                                  Instances For
                                                    def OptimalityTheory.Correspondence.Corr.toIdentFeatureConstraint {Role : Type u_1} {α : Type u_2} {F : Type u_3} [DecidableEq F] (proj : αF) (r₁ r₂ : Role) :

                                                    IDENT[F] over a Corr: violations of the feature picked out by proj.

                                                    Equations
                                                    Instances For
                                                      def OptimalityTheory.Correspondence.Corr.toMaxConstraint {Role : Type u_1} {α : Type u_2} (r₁ r₂ : Role) :

                                                      MAX over a Corr: deletion (input segments lacking a correspondent).

                                                      Equations
                                                      Instances For
                                                        def OptimalityTheory.Correspondence.Corr.toDepConstraint {Role : Type u_1} {α : Type u_2} (r₁ r₂ : Role) :

                                                        DEP over a Corr: epenthesis (output segments lacking a correspondent).

                                                        Equations
                                                        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.

                                                          @[simp]
                                                          theorem OptimalityTheory.Correspondence.Corr.toIdentFeatureConstraint_eval_identity {α : Type u_2} {F : Type u_3} [DecidableEq F] (proj : αF) (s : List α) :

                                                          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
                                                          Instances For
                                                            def OptimalityTheory.Correspondence.Corr.IsMarkedness {Role : Type u_1} {α : Type u_2} (out : Role) (c : Constraints.Constraint (Corr Role α)) :

                                                            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
                                                            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 #

                                                                        def OptimalityTheory.Correspondence.Corr.RoleQuiv {Role : Type u_1} {α : Type u_2} :
                                                                        Corr Role αType u_1

                                                                        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
                                                                        Instances For
                                                                          @[implicit_reducible]
                                                                          instance OptimalityTheory.Correspondence.Corr.instQuiverRoleQuiv {Role : Type u_1} {α : Type u_2} (c : Corr Role α) :
                                                                          Quiver c.RoleQuiv
                                                                          Equations