Person — carrier capabilities #
The typeclass mixin for carriers that bear grammatical person — the
person analogue of HasNumber (Features/Number/Capabilities.lean).
personOf extracts the carrier's analytical person value; Compatible
is the agreement-checking relation. Carriers that store UD realization
(UD.MorphFeatures) lift through Person.fromUD; carriers that store a
(UD person, clusivity) pair recover the quadripartition cell
(Syntax/Pronoun/Capabilities.lean).
Equations
- instHasPersonMorphFeatures = { personOf := fun (mf : UD.MorphFeatures) => Option.map Person.fromUD mf.person }
Equations
- instHasPersonPerson = { personOf := some }
Two carriers are person-compatible: the slot values are compatible in
the flat information order (Compat) — if both mark person, the values
agree; unmarked carriers are wildcards.
Equations
- HasPerson.Compatible a b = Compat (personOf a) (personOf b)
Instances For
φ-compatibility entails person compatibility: the HasPerson mixin
never diverges from the unification-based agreement engine
(UD.MorphFeatures.compatible) — the person analogue of
UD.MorphFeatures.compatible_hasNumber.