Phi lattices and their operations #
The person lattices of [Har16a] and the operations on them, factored out as
reusable substrate. A phi lattice is a collection of feature denotations — each
denotation a nonempty set of atoms (Finset (Finset α), the powerset of an atomic
participant domain, p. 73: the author lattice ℒau, participant lattice ℒpt, and
π lattice ℒπ). Features denote operations on these lattices, not predicates:
⊕ (oplus, disjoint addition) and ⊖ (ominus, joint subtraction), with
Lexical Complementarity (lexComp) the elsewhere-style restriction that keeps
sibling denotations disjoint (p. 80).
This is the shared origin substrate for [Har16a]'s person partition
(Studies.Harbour2016, which builds the partition construction on top) and for
[Too23]'s animacy account (Studies.Toosarvandani2023, which reuses
oplus/nePowerset/lexComp for heterogeneous pluralities such as oplus SPEAKER ANIMATE). Generic over the atom type α. Sits beside Phi.Geometry (the person
feature geometry) and Phi.Recursion (the number calculus).
Main declarations #
nePowerset— the nonempty powerset (a phi lattice generated from an atom set).oplus— disjoint addition (⊕): pointwise lattice join of two denotations ([Har16a] (17);= Finset.image₂ (· ∪ ·)).ominus— joint subtraction (⊖): strip a feature lattice's maximum from each element ([Har16a] (19)).lexComp— Lexical Complementarity:G \ F, restrictingGaway from a more specified siblingF([Har16a] (31)).act— apply a signed feature (latticeF) to a collectionG:+Fisoplus,−Fisominus. The±sign is genuine bivalent data ([Har16a]'s bivalence thesis).
The lattice constructor #
Nonempty powerset: all nonempty subsets of atoms. The phi lattice generated
from an atom set — every nonempty sum of atoms (ℒπ when atoms is the full
participant domain). Mathlib has no such operation; this mirrors the definitional shape
of Finset.ssubsets (= powerset.erase s, the proper subsets — removing the top),
removing the bottom ∅ instead.
Equations
- Minimalist.Phi.Lattice.nePowerset atoms = atoms.powerset.erase ∅
Instances For
Monotonicity of nePowerset.
nePowerset X is closed under nonempty union.
Disjoint addition ⊕ (oplus): the pointwise lattice join of two feature
denotations ([Har16a] (17)) — the Linkian join operator [Lin83] (cf.
[Chi98]'s sum). Generates heterogeneous pluralities: oplus SPEAKER ANIMATE
includes {speaker, animal}. The body (F ×ˢ G).image (· ∪ ·) is mathlib's own
unfolding of Finset.image₂ (· ∪ ·) (see oplus_eq_image₂), so the image₂_*
lemmas transfer by rfl.
Equations
- Minimalist.Phi.Lattice.oplus F G = Finset.image (fun (yz : Finset α × Finset α) => yz.1 ∪ yz.2) (F ×ˢ G)
Instances For
oplus agrees with Finset.image₂ (· ∪ ·) definitionally.
Membership in oplus.
Constructor form of oplus membership.
Monotonicity of ⊕.
⊕ of two sub-lattices of nePowerset X lands back in nePowerset X.
nePowerset X is closed under self-⊕.
Joint subtraction ⊖ (ominus): strip the feature lattice F's maximum
(F.sup id, its generating set) from every element of the collection G. Cumulative
subtraction reduces to subtracting the maximum, since the feature lattices have a
unique maximal element ([Har16a] (19)). The empty set may appear and is winnowed
downstream by the variable head φ.
Equations
- Minimalist.Phi.Lattice.ominus F G = Finset.image (fun (x : Finset α) => x \ F.sup id) G
Instances For
Membership in ominus.
Monotonicity of ⊖ in the acted-on collection.
Lexical Complementarity: when ⟦F⟧ ⊂ ⟦G⟧, use of G is restricted to
⟦G⟧ \ ⟦F⟧, forestalling a denotation from covering individuals a more featurally
specified sibling already picks out ([Har16a] (31), p. 80).
Equations
- Minimalist.Phi.Lattice.lexComp G F = G \ F
Instances For
Membership in lexComp.
A lexComp result is disjoint from the more-specified sibling it excludes.
lexComp stays within nePowerset X (it only removes elements).
Signed feature application #
Apply a signed feature (lattice F) to a collection G: +F is oplus, −F
is ominus. The sign : Bool is genuine bivalent feature polarity ([Har16a]
treats ± as bivalent values), not predicate-shape data.
Equations
- Minimalist.Phi.Lattice.act sign F G = if sign = true then Minimalist.Phi.Lattice.oplus F G else Minimalist.Phi.Lattice.ominus F G