Documentation

Linglib.Syntax.Pronoun.Capabilities

Pronoun capabilities — a mixin tower over pronoun carriers #

Pronoun entries (Pronoun, PersonalPronoun, IndefinitePronoun, …) are bundled structure values — many per language, like mathlib's MonoidHom. This file gives the capabilities a carrier α can have, as typeclass mixins abstracting over the representation — the MonoidHomClass/ContinuousMul-over-MonoidHom/Mul relationship, applied to pronouns. A consumer (binding engine, agreement module, …) then requires exactly the axes it touches: [Proform α] for form/φ, [Bound α] for the Principle A/B/C role, and so on — composed by instance parameters with no extends-diamond. The carrier may be a record (Pronoun), a syntactic object (Word), or a future theory representation; each supplies its own instances.

Main declarations #

Implementation notes #

Capabilities live near their domain (mathlib-style: ContinuousMul is in Topology, not Algebra). The word-class-neutral Indefinite capability ([Indefinite α], Haspelmath function-coverage) therefore lives in Features/Indefinite.lean, and the binding axis Bound lives in Features/CoreferenceStatus.lean — neither is pronoun-specific. Two further axes are deferred, each for a principled reason. Deficiency ([CS99a] Pronoun.Strength) is per-series, not per-element: every carrier's strength is carrier-uniform (Italian clitics are all .clitic; the Mixtec clitic/nonclitic fields have fixed strengths), so an α → Strength accessor would be constant on every carrier — a per-type fact, not a per-element capability. It is served by the Pronoun.strength field (series-level, none when not homogeneous) and the Strength linear order, not by a class. The finer lexical-kind axis (personal vs relative vs interrogative vs demonstrative) is Pronoun.pronType — real UD morphology on the carrier (no invented enum), threaded onto the projected word by toWord.

The spine: Proform #

class Proform (α : Type u_1) :
Type u_1

A pronoun-like carrier exposes a surface form and agreement phi-features — everything true of every pronoun, the base every other capability builds over (cf. Mul/Semigroup as the base operation class).

  • form : αString

    Surface form (romanization or orthographic).

  • phi : αUD.MorphFeatures

    Agreement φ-features (person/number/gender).

Instances
    @[implicit_reducible]
    Equations
    @[implicit_reducible]
    Equations
    @[implicit_reducible]
    Equations

    The pronoun carriers' Bound instances, and the faithfulness certificate #

    @[implicit_reducible]

    A bare Pronoun's declared class, defaulting an undeclared φ-shell to Principle-B .pronoun ([Cho81]'s elsewhere case for a pro-form).

    Equations

    The canonical morphology source agrees with the mixin: a pro-form's projected word classifies (Binding.bindingClassOf, reading Reflex/PronType/category) exactly as the carrier's Bound class — Pronoun.toWord threads the binding morphology faithfully, so the surface engine and the capability never diverge. Two coherence premises, both vacuous for every actual entry: the pronoun is not lexically declared an R-expression (its surface category .PRON would win), and it does not store PronType=Rcp (reciprocal is derived by toWord from bindingClass = .reciprocal, never stored).

    The number axis: HasNumber instances and faithfulness #

    @[implicit_reducible]

    A pronoun bears its analytical number directly — the carrier field is root-Number-typed.

    Equations
    theorem numberOf_toWord (p : Pronoun) :
    HasNumber.numberOf p.toWord = p.number.bind fun (n : Number) => n.toUD.bind Number.fromUD

    Projecting a pronoun to a Word realizes its number through UD: the round-trip is identity exactly on UD-expressible values — the minimal/augmented values are lost to realization (Number.toUD is partial), the number analogue of personOf_toWord's coarsening.

    The person axis: HasPerson instances and faithfulness #

    @[implicit_reducible]

    A pronoun bears its analytical person directly — the carrier field is root-Person-typed, clusivity included (Tagalog kami = firstExclusive).

    Equations
    theorem personOf_toWord (p : Pronoun) :

    Projecting a pronoun to a Word coarsens its person: Word carries UD realization, which has no clusivity — the mixin makes the loss explicit rather than silent.

    The case axis: HasCase instances and faithfulness #

    @[implicit_reducible]

    A pronoun bears its analytical case directly — the carrier field is root-Case-typed.

    Equations
    @[implicit_reducible]
    Equations

    Projecting a pronoun to a Word realizes its case through UD losslessly: Case.toUD is currently a bijection, so — unlike person (clusivity lost) and number (minimal/augmented lost) — the round-trip is the identity. This is the theorem that degrades when an analytical refinement splits a UD cell (Case.fromUD_toUD).

    Orthogonal data-mixin: Deictic #

    class Deictic (α : Type u_1) [Proform α] :
    Type u_1

    A deictic carrier exposes register and — when it diverges from agreement person — referential person, the features specific to personal/referential pronouns ([AZ25a]).

    • register : αFeatures.Register.Level

      Register level (T/V, honorific tiers).

    • referentialPerson : αOption Person

      Referential person when it diverges from formal/agreement person; none otherwise.

    Instances