Documentation

Linglib.Features.Slot

Feature-checking slots #

[Cho00] [MCB25]

A feature-checking slot records the state of one feature dimension on a lexical item. Unlike a plain determinate slot (Core/Order/Flat.lean's Flat, which is two-state — bottom or a value), a feature dimension under Agree is in one of three states:

FeatureSlot is polymorphic in the value type α, so it is reusable across feature spaces (φ-features, case, categorial features, …) and carries no commitment to any particular inventory.

Why this is decoupled from the Merge carrier #

Per [MCB25] (book p. 13), the valued/unvalued feature-checking apparatus is the Stabler-Minimalism layer: label-matching makes Merge partially defined, forcing "an algebraically more complex Hopf algebra and … a family of right-ideal coideals … which keep track of the feature checking problem." MCB's own free-Merge core (the SMT) keeps SO₀ features atomic — Merge is free, with no feature checking. So feature-checking slots are an Agree-layer structure, kept general here and decoupled from the SyntacticObject carrier rather than baked into it.

Subsumption order #

absent (⊥) < unvalued < valued v, with distinct valued values forming an antichain: a probe is more specified than an absent dimension and less specified than a value, and two values are incomparable. This is the per-slot order that the bundle subsumption order (Features.BundleLike.Subsumes) is built from.

inductive Features.FeatureSlot (α : Type u_1) :
Type u_1

A feature-checking slot for value type α: absent / unvalued (probe) / valued v. See the module docstring.

Instances For
    @[implicit_reducible]
    instance Features.instReprFeatureSlot {α✝ : Type u_1} [Repr α✝] :
    Repr (FeatureSlot α✝)
    Equations
    def Features.instReprFeatureSlot.repr {α✝ : Type u_1} [Repr α✝] :
    FeatureSlot α✝Std.Format
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[implicit_reducible]
      instance Features.instDecidableEqFeatureSlot {α✝ : Type u_1} [DecidableEq α✝] :
      DecidableEq (FeatureSlot α✝)
      Equations
      @[implicit_reducible]
      instance Features.FeatureSlot.instBot {α : Type u_1} :
      Bot (FeatureSlot α)
      Equations

      The slot specifies a (present) feature: it is not absent.

      Equations
      Instances For

        The slot is a probe (present but unvalued).

        Equations
        Instances For
          def Features.FeatureSlot.isValued {α : Type u_1} :
          FeatureSlot αBool

          The slot carries a value.

          Equations
          Instances For
            def Features.FeatureSlot.value? {α : Type u_1} :
            FeatureSlot αOption α

            The value, when the slot is valued.

            Equations
            Instances For
              inductive Features.FeatureSlot.LE {α : Type u_1} :

              Subsumption: absentunvaluedvalued v, with distinct values incomparable. The reflexive-transitive order on the three checking states.

              Instances For
                @[implicit_reducible]
                instance Features.FeatureSlot.instLE {α : Type u_1} :
                LE (FeatureSlot α)
                Equations
                theorem Features.FeatureSlot.le_def {α : Type u_1} {a b : FeatureSlot α} :
                a b a.LE b
                theorem Features.FeatureSlot.le_refl {α : Type u_1} (a : FeatureSlot α) :
                a a
                theorem Features.FeatureSlot.le_trans {α : Type u_1} {a b c : FeatureSlot α} (hab : a b) (hbc : b c) :
                a c
                theorem Features.FeatureSlot.le_antisymm {α : Type u_1} {a b : FeatureSlot α} (hab : a b) (hba : b a) :
                a = b
                @[implicit_reducible]
                instance Features.FeatureSlot.instPartialOrder {α : Type u_1} :
                PartialOrder (FeatureSlot α)
                Equations
                • One or more equations did not get rendered due to their size.
                @[implicit_reducible]
                instance Features.FeatureSlot.instOrderBot {α : Type u_1} :
                OrderBot (FeatureSlot α)
                Equations
                @[simp]
                theorem Features.FeatureSlot.isSpecified_iff_ne_bot {α : Type u_1} {s : FeatureSlot α} :
                s.isSpecified = true s