Selection-driven heads on the SyntacticObject carrier #
This file defines the c-selection head of a syntactic object: whichever sister's
head selects the saturated other projects — [Adg03]'s identification of the
projecting item with the selecting item, instantiating the bare-phrase-structure
projection ([Cho95a] §4) that [MCB25] §1.13.3
abstracts as head functions (Definition 1.13.6 / Lemma 1.13.7). Like the book's
head functions it is partial: 0 at exocentric nodes.
Main declarations #
Minimalist.SelectionState: a constituent's selection state — the projecting head with its residual selectional stack; aCommMagmaandMulZeroClass, with0the off-Dom(h)failure.Mul SelectionStateandMinimalist.selSide: the carrier-free combinators — the selection product, and which daughter projects.Minimalist.selNode,Minimalist.selCheckPlanar,Minimalist.SyntacticObject.selCheck: the selection algebra (SyntacticObject.mergeAlgebra), its catamorphism, and the carrier lift.Minimalist.SyntacticObject.selHead,Minimalist.SyntacticObject.outerCatC: the head token and its outer category — the foundation the Phase API consumes (isPhaseHeadOf).Minimalist.SyntacticObject.selCheckHom:selCheckas a morphism of magmasSyntacticObject →ₙ* SelectionState, viaSyntacticObject.lift.
Main results #
mul_comm(viaCommMagma SelectionState) andMinimalist.selSide_comm: order-independence — the formal content of Merge's unordered output.Minimalist.SyntacticObject.selHead_node: endocentricity — a node's head is one of its daughters' heads.
Implementation notes #
SelectionState is a one-field structure over Option (LIToken × List Cat): the
Option is implementation, 0 is the public spelling of the exocentric failure —
the absorbing element of [MCB25]'s renormalization reading
of partial head functions (off-domain values as the "meaningless infinities" of
computation, their §1.13.2 remark). No One (two saturated states multiply to
0 — exocentricity is a zero divisor) and no associativity claim, so the
structure is CommMagma + MulZeroClass only. Index-free traces: a bare
trace leaf gets the canonical saturated value .of (mkTraceToken 0) [];
selCheck reads only the token's category and outerSel, both index-independent.
The selection state #
Equations
- Minimalist.instDecidableEqSelectionState.decEq { toOption := a } { toOption := b } = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
A defined selection state: projecting head tok with residual stack stack.
Equations
- Minimalist.SelectionState.of tok stack = { toOption := some (tok, stack) }
Instances For
Equations
- Minimalist.instZeroSelectionState = { zero := { toOption := none } }
The projecting head token; none off the endocentric domain.
Equations
- x.head = Option.map (fun (x : Minimalist.LIToken × List Minimalist.Cat) => x.1) x.toOption
Instances For
The residual selectional stack (some [] = saturated).
Equations
- x.residual = Option.map (fun (x : Minimalist.LIToken × List Minimalist.Cat) => x.2) x.toOption
Instances For
Carrier-free selection combinators #
The selection decision at a binary node — (which sister projects, head,
residual), none at exocentric nodes; * and selSide are its projections.
Equations
- Minimalist.selCombine { toOption := some (ha, c :: rest) } { toOption := some (hb, []) } = if hb.item.outerCat = c then some (true, ha, rest) else none
- Minimalist.selCombine { toOption := some (ha, []) } { toOption := some (hb, c :: rest) } = if ha.item.outerCat = c then some (false, hb, rest) else none
- Minimalist.selCombine x✝¹ x✝ = none
Instances For
Which daughter projects: some true = left, some false = right.
Equations
- Minimalist.selSide x y = Option.map (fun (x : Bool × Minimalist.LIToken × List Minimalist.Cat) => x.1) (Minimalist.selCombine x y)
Instances For
Swapping the sisters flips the side and keeps the head and residual.
S₂-equivariance: swap acts on the sisters, Bool.not on the side — MCB's
per-vertex edge-marking (Lemma 1.13.4).
The selection product: the head-and-residual of the selCombine decision
([MCB25] §1.13); 0 is absorbing.
Equations
- One or more equations did not get rendered due to their size.
* unfolded: the canonical accessor for the selection product.
Equations
- Minimalist.instCommMagmaSelectionState = { toMul := Minimalist.instMulZeroClassSelectionState.toMul, mul_comm := Minimalist.instCommMagmaSelectionState._proof_1 }
Coherence: the projected head is the head of the sister on the reported side.
The head of x * y (when defined) is one of x/y's heads.
Selection check on the carriers #
The selection algebra: the SyntacticObject.mergeAlgebra of token + outerSel
leaves and the saturated, index-free trace.
Equations
- One or more equations did not get rendered due to their size.
Instances For
selNode is invariant under permutation of the daughter states.
Selection check on a planar tree: the catamorphism of selNode.
Instances For
Reduction of selCheckPlanar at a node: fold the algebra over the daughters.
selCheckPlanar is Perm-invariant, so it descends to the quotient.
Selection check on the nonplanar carrier.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The selection-driven head on SyntacticObject #
Selection-driven head check: the selection instance of [MCB25]'s head functions; computable.
Equations
- s.selCheck = Minimalist.selCheckN ↑s
Instances For
The projecting head's lexical item, by c-selection.
Instances For
Residual pending selectional features (some [] = saturated).
Equations
- s.checkedSel = s.selCheck.residual
Instances For
The projecting head's outer category (the phase-head selector); none at
exocentric nodes.
Equations
- s.outerCatC = Option.map (fun (x : Minimalist.LIToken) => x.item.outerCat) s.selHead
Instances For
Endocentricity: a node's projecting head is one of its daughters' heads — bare-phrase-structure projection ([Cho95a] §4, abstracted as [MCB25] Definition 1.13.6 / Lemma 1.13.7).