Documentation

Linglib.Theories.Syntax.Minimalist.Agreement.CoordinateResolution

Coordinate Agreement Resolution #

@cite{corbett-2000} @cite{adamson-anagnostopoulou-2025} @cite{carstens-2026} @cite{harbour-2014} @cite{link-1983}

When DPs are conjoined, &P must bear phi-features for agreement. Each phi-dimension resolves conjuncts' features using a distinct operation:

Despite different operations, all three share a common architecture:

  1. Percolation: only i(nterpretable) features enter resolution
  2. Resolution: apply the dimension-specific operation
  3. Default: if resolution yields nothing, apply a language-specific default

A key structural asymmetry: number and person resolution always succeed (conjoined DPs always have some number and person), while gender resolution can fail (empty intersection → language-specific default).

Number resolution — lattice grounding #

Number resolution is derived from the join-semilattice of individuals (@cite{link-1983}) via @cite{harbour-2014}'s feature geometry:

  1. canonicalResolve computes the finest category from the lattice join
  2. coarsenTo maps it to the available categories in a number system
  3. numberResolveIn composes the two

Relation to existing modules #

A resolution operation for a single phi-feature dimension.

Person and number each have their own algebraic structure for combining feature values from conjoined DPs. Gender uses GenderResolution.resolve directly (multi-feature intersection).

resolve f₁ f₂ combines two percolated (interpretable) feature values and returns the resolved value, or none if resolution fails.

  • resolve : FFOption F
Instances For

    Lattice-Grounded Number Resolution #

    @cite{harbour-2014} @cite{corbett-2000} @cite{link-1983}

    Number resolution for conjoined DPs is grounded in the join-semilattice of individuals (@cite{link-1983}). The referent of "X and Y" is the mereological sum x ⊔ y, and the sum's number category is determined by its lattice position (@cite{harbour-2014} §4):

    This CANONICAL resolution gives the finest possible category. Languages then coarsen the result to their available categories:

    The coarsening is the formal content of @cite{corbett-2000} §6.3: "the result depends on which number values the language has."

    Canonical number resolution: the finest category for the mereological sum of two referents, derived from two lattice-theoretic principles (@cite{harbour-2014}):

    1. Cardinality addition (for determinate categories): |A ⊔ B| = |A| + |B| for disjoint referent sets A, B. The sum is mapped back to the finest determinate category via Category.fromCard.

      • sg(1) + sg(1) = 2 → du
      • sg(1) + du(2) = 3 → trial
      • du(2) + du(2) = 4 → greaterPlural
    2. MIN/AUG lattice join (for [±minimal] systems without [±atomic]): In a 2-level lattice {minimal, augmented}, the join of any two distinct elements exceeds the minimal. Since coordination requires disjoint referents, the result is always augmented.

    3. Catch-all: Categories without exact cardinality or MIN/AUG membership (plural, paucal, greaterPlural, etc.) resolve to plural — the default non-singular category.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Canonical resolution is commutative: x ⊔ y = y ⊔ x.

      Coarsen a category to the nearest available one in a number system.

      Categories not present in the system map to their semantic superordinate — the broader category whose referents include the absent category's referents.

      Equations
      Instances For

        System-parameterized number resolution: canonical lattice join, coarsened to the available categories in the target system.

        This derives resolution rules from two independent components:

        1. Lattice join: sg + sg → du (canonical)
        2. Coarsening: du → pl in a {sg, pl} system
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          The canonical resolution is verified against a concrete 3-atom powerset lattice. Atoms: {a}=1, {b}=2, {c}=4. Pairs: {a,b}=3, {a,c}=5, {b,c}=6. Triple: {a,b,c}=7. Join = bitwise OR.

          `Features.Number.latticeToFeatures` classifies elements by lattice
          position: atoms → singular, minimal non-atoms → dual, non-minimal
          non-atoms → plural. 
          

          Atom 4 ⊔ Pair 3 = 7, which is plural (non-minimal non-atom). Lattice grounding: canonicalResolve sg du = trial (plural in base system, trial with recursion).

          The derived canonicalResolve agrees with the powerset lattice: join in the concrete lattice, then classify via latticeToFeatures, matches canonicalResolve applied to the classified inputs.

          • atom(1) is singular, atom(2) is singular → join=3 is dual
          • atom(1) is singular, pair(6) is dual → join=7 is plural (= trial with recursion)

          This is the structural proof that canonicalResolve is the lattice join pushed through latticeToFeatures, not a stipulation.

          Resolution Closure #

          Number resolution is closed under every well-formed number system generated by @cite{harbour-2014}'s feature recursion: for any two categories a, b in a system S, the resolved category coarsenTo S (canonicalResolve a b) is also in S.

          This is a non-trivial structural property — canonicalResolve can produce categories not in the target system (e.g., du from sg + sg in a {sg, pl} system), but coarsenTo always maps the result back to an available category. The theorem verifies this for all 15 Table 3 entries (12 distinct configs, covering 2–5 value systems).

          Resolution closure: for every Harbour 2014 Table 3 system, resolving any two categories from the system produces a category in the system.

          Percolation: extract the feature value iff interpretable.

          u-features are excluded from the resolution calculus (@cite{adamson-anagnostopoulou-2025}, @cite{carstens-2026}).

          Equations
          Instances For

            Resolve two annotated features: percolate, then apply the operation.

            Both features must be interpretable for resolution to proceed. If either is uninterpretable, resolution yields none (default).

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Number resolution always succeeds for any system.

              Person resolution always succeeds.

              theorem Minimalist.Agreement.CoordinateResolution.gender_singleton_iff_match {G : Type} [BEq G] [LawfulBEq G] (g₁ g₂ : G) :
              (GenderResolution.resolve [{ value := g₁, interp := Interpretability.interpretable }] [{ value := g₂, interp := Interpretability.interpretable }]).isSome = (g₁ == g₂)

              Gender resolution with singleton interpretable bundles succeeds iff features match — the only dimension that can fail, triggering default agreement.

              Number resolution is commutative for any system.

              Person resolution is commutative (both directions yield max).

              theorem Minimalist.Agreement.CoordinateResolution.gender_only_fallible :
              (∀ (system : List Features.Number.Category) (a b : Features.Number.Category), (numberResolveIn system a b).isSome = true) (∀ (p₁ p₂ : Features.Prominence.PersonLevel), (personResolve p₁ p₂).isSome = true) ∃ (g₁ : GenderResolution.FeatureBundle Bool) (g₂ : GenderResolution.FeatureBundle Bool), (GenderResolution.resolve g₁ g₂).isSome = false

              The structural asymmetry: number and person always resolve successfully, but gender can fail. This explains why default agreement is a gender phenomenon, not a number or person one.

              Resolved phi-features for a conjoined DP (&P).

              Instances For

                Resolve all phi-features for two conjoined DPs.

                Each dimension is resolved independently:

                • Number: mereological join coarsened to system (numberOp)
                • Person: hierarchy (personOp)
                • Gender: GenderResolution.resolve (percolation + intersection)
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[implicit_reducible]
                  Equations
                  • One or more equations did not get rendered due to their size.