Documentation

Linglib.Syntax.Minimalist.Features

Feature Infrastructure for Minimalist Agree #

[Adg03] [Cho95] [Cho00] [Cho01] [Alo20] [AB26] [Lob95] [Pan15] [Pol89]

Phi-features, case values, and feature bundles — the shared infrastructure underlying all Agree-based operations. Extracted from Agree.lean to separate the feature types (what can be checked) from the Agree operation (how checking works) and the failure model (what happens when checking fails — a Probe.outcome of unvalued; see Probe/Basic.lean).

±Interpretable Features ([Cho95] Ch 4 §4.5) #

The ±Interpretable distinction is orthogonal to valued/unvalued:

Interpretability is determined by the combination of feature type and host category: person on N is +Interpretable, person on T is –Interpretable. isInterpretableOn encodes this mapping.

Design Decision: Person replaces Nat #

PhiFeature.person uses Person (.first |.second |.third) rather than a raw Nat. This eliminates the possibility of meaningless person values (e.g., person 47) and grounds the feature inventory in the same canonical type used across the library:

For unvalued (probe) features, the value is irrelevant — FeatureVal.sameType matches any .person _ against any .person _ and any .number _ against any .number _, ignoring specific values. Use .person .third and .number .sg as conventional placeholders for probes.

Phi-features (agreement features).

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

      Honorific level: social ordering between speaker and referent. Relational, not absolute. ⟦iHON⟧ = λx. S_i ≺ x, where ≺ encodes social hierarchy.

      Instances For
        def Minimalist.instReprHonLevel.repr :
        HonLevelStd.Format
        Equations
        Instances For
          @[implicit_reducible]
          Equations

          Feature values that can be checked via Agree

          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Minimalist.instDecidableEqFeatureVal.decEq (x✝ x✝¹ : FeatureVal) :
              Decidable (x✝ = x✝¹)
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Do two feature values have the same type, ignoring specific values?

                This is the correct matching predicate for Agree: a probe with [uPerson] should match any goal with [Person:x], regardless of the specific person value x. In contrast, DecidableEq (==) compares both type and value, which is wrong for Agree matching where the probe carries a placeholder value.

                Equations
                Instances For

                  A grammatical feature: either valued or unvalued.

                  Valued vs unvalued is about whether the feature carries a specific value (person:3) or just a type placeholder (person:_). This is orthogonal to ±Interpretable (see Interpretability below):

                  +Interpretable–Interpretable
                  Valuedφ of N (person:3)
                  Unvaluedφ of T/v, Case of N

                  Unvalued features act as probes; valued features can be goals. But interpretability determines whether a feature must be checked and deleted before LF — a separate question from whether it currently carries a value.

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

                      Is this feature valued?

                      Equations
                      Instances For

                        Is this feature unvalued (a potential probe)?

                        Equations
                        Instances For

                          Get the feature type (ignoring valued/unvalued distinction)

                          Equations
                          Instances For

                            Do two features match in type? (for Agree) Delegates to FeatureVal.sameType, ignoring specific values.

                            Equations
                            Instances For

                              A feature bundle is a total assignment from feature dimensions to three-state checking slots (Features.FeatureSlot): one slot per dimension, absent / unvalued (probe) / valued v. This replaces the earlier list representation (List GramFeature), which admitted junk — duplicate dimensions, conflicting values — and was not extensional, so it could not be a LawfulBundleLike (the Features/Basic.lean Todo).

                              This is the Agree-layer structure; per [MCB25] (book p. 13) the free-Merge core keeps SO₀ features atomic, so the slot apparatus is decoupled from the SyntacticObject carrier and lives in Features/Slot.lean.

                              GramFeature survives as a literal-builder DSL: ofGramFeatures folds a list of valued/unvalued features into the assignment, the list head winning on duplicate dimensions.

                              The feature dimensions checked via Agree — the equivalence classes of FeatureVal.sameType. φ-features split into their three sub-dimensions (person, number, gender) so each is a slot in its own right.

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

                                  All feature dimensions, for computable enumeration (Finset.univ.toList is noncomputable).

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

                                    The dimension a feature value belongs to. Two values share a dimension iff FeatureVal.sameType holds.

                                    Equations
                                    Instances For
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[implicit_reducible]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      @[reducible, inline]

                                      A feature bundle as a total assignment: each dimension maps to a three-state checking slot. The canonical extensional carrier — replacing List GramFeature — that is LawfulBundleLike.

                                      Equations
                                      Instances For

                                        The bundle has a valued feature of the given dimension.

                                        Equations
                                        Instances For

                                          The bundle has an unvalued (probe) feature of the given dimension.

                                          Equations
                                          Instances For

                                            The value at the given dimension, when valued.

                                            Equations
                                            Instances For

                                              The assignment specifying exactly one valued dimension, all others absent.

                                              Equations
                                              Instances For
                                                @[implicit_reducible]

                                                The everywhere-absent bundle is the default.

                                                Equations
                                                @[implicit_reducible]
                                                Equations
                                                @[implicit_reducible]

                                                Render a bundle by its specified (non-absent) dimensions. The function carrier has no structural Repr, so containing structures that deriving Repr rely on this.

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

                                                Bridge from the legacy list representation: fold each feature into its dimension's slot, the list head taking precedence on duplicate dimensions (matching getValuedFeature/find? first-match semantics).

                                                Equations
                                                Instances For

                                                  Reconstruct a FeatureVal at dimension t from a value.

                                                  Equations
                                                  Instances For

                                                    A conventional placeholder value per dimension (for unvalued-feature reconstruction, where the value is semantically irrelevant).

                                                    Equations
                                                    Instances For

                                                      Bridge back to the legacy list representation: one GramFeature per specified dimension. The placeholder value on unvalued features is semantically inert (ofGramFeatures discards it via toSlot), so ofGramFeaturestoGramFeatures round-trips.

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

                                                        FeatureVal-keyed query wrappers #

                                                        Convenience over the FeatureType-keyed methods: pass a sample FeatureVal (its carried value is ignored, only the dimension matters — the old sameType semantics). These keep probe-spec call sites that pass a placeholder feature (.phi (.person .third)) unchanged.

                                                        The bundle has a valued feature of fv's dimension.

                                                        Equations
                                                        Instances For

                                                          The bundle has an unvalued (probe) feature of fv's dimension.

                                                          Equations
                                                          Instances For

                                                            The value at fv's dimension, when valued.

                                                            Equations
                                                            Instances For

                                                              Whether a feature is interpretable (contributes to LF) or uninterpretable (must be checked and deleted before LF).

                                                              This is the central distinction of [Cho95] Ch 4 §4.5. It is orthogonal to valued/unvalued: a feature can be interpretable but unvalued (rare), or uninterpretable but valued (never, in the standard theory). The typical pairings are:

                                                              • +Interpretable, valued: φ-features on nouns, categorial features
                                                              • –Interpretable, unvalued: φ-features on T/v, Case on nouns

                                                              AgreeSOT.lean uses Interpretability directly for tense features. GenderResolution.lean's AnnotatedFeature.interp uses Interpretability directly; CoordinateResolution.lean, AdamsonAnagnostopoulou2025.lean, and Carstens2026.lean all use it via open _root_.Minimalist.

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

                                                                  Whether a feature is inherently interpretable regardless of host.

                                                                  Some features are always interpretable (categorial, honorific, factive) or always uninterpretable (Case, EPP, ellipsis). For features whose interpretability depends on host category (phi, wh, tense), see isInterpretableOn in Checking.lean.

                                                                  Equations
                                                                  Instances For