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.cat?: the head token and its category, the head function of the phases (SyntacticObject.IsPhaseHead).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.Head SelectionState: the head of a selection product is a factor's head, soselHeadis endocentric (Minimalist.mem_head_or_mem_head_of_mem_head_map_mul).Minimalist.SelectionState.isSaturated_iff_not_isSaturated_of_mul_ne_zero,Minimalist.SelectionState.head_mul_of_not_isSaturated: Merge is triggered, one factor selecting and the other saturated, and the selecting factor projects.
Implementation notes #
SelectionState is a one-field structure over Option (LexicalItem.Token × List Cat), so that the
selection product can be an instance on it: the Option is implementation, and 0 is the
public spelling of the exocentric failure, the off-domain value of a partial head function.
There is no One, since two saturated states multiply to 0, and no associativity claim, so the
structure is CommMagma + MulZeroClass only. The trace of a token is a lower copy of the
phrase it heads, so it gets that phrase's value, saturated with the token's category
(traceState), and a head that selected the moved phrase still selects its trace; the bare
trace remembers no token and gets the saturated dummy .of .bareTrace []. selCheck
reads only the token's category and sel. Two saturated sisters have no head, as in
[MCB25]'s partial head functions: a specifier and its sister are
labeled, if at all, by the labeling algorithm (SyntacticObject/Label.lean).
References #
The selection state #
A constituent's selection state is the projecting head with its residual stack
(.of tok [] = saturated), and 0 off the endocentric domain.
- toOption : Option (LexicalItem.Token × List Cat)
Instances For
Equations
- Minimalist.instDecidableEqSelectionState.decEq { toOption := a } { toOption := b } = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
A defined selection state has projecting head tok and 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.LexicalItem.Token × List Minimalist.Cat) => x.1) x.toOption
Instances For
The residual selectional stack (some [] = saturated).
Equations
- x.residual = Option.map (fun (x : Minimalist.LexicalItem.Token × 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.cat = c then some (true, ha, rest) else none
- Minimalist.selCombine { toOption := some (ha, []) } { toOption := some (hb, c :: rest) } = if ha.item.cat = c then some (false, hb, rest) else none
- Minimalist.selCombine x✝¹ x✝ = none
Instances For
The projecting daughter is reported as some true for the left and some false for the
right.
Equations
- Minimalist.selSide x y = Option.map (fun (x : Bool × Minimalist.LexicalItem.Token × 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 is 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.
* unfolds to the canonical accessor for the selection product.
Equations
- Minimalist.instCommMagmaSelectionState = { toMul := Minimalist.instMulZeroClassSelectionState.toMul, mul_comm := ⋯ }
A state never combines with itself, since of two equal sisters neither selects the other.
The projected head is the head of the sister on the reported side.
The head of a selection product is one of its factors' heads.
Equations
- Minimalist.instHeadSelectionState = { head := Minimalist.SelectionState.head, head_zero := Minimalist.instHeadSelectionState._proof_1, mem_head_or_mem_head_of_mem_head_mul := ⋯ }
A saturated state never projects, so the head of its product is the other factor's head.
Triggered Merge #
A selection state is saturated when its head selects nothing further.
Equations
- x.IsSaturated = (x.residual = some [])
Instances For
[CS16b]'s triggered Merge (Definition 27): of the factors of a defined selection product exactly one is saturated, the other still selecting.
[CS16b], Theorem 13: the factor whose selection Merge checks projects.
Selection check on the carriers #
The selection state of a trace is a saturated copy of the phrase its token heads, and for the bare trace the saturated dummy.
Equations
Instances For
The selection algebra is the SyntacticObject.mergeAlgebra of token + sel
leaves and the traces' traceState.
Equations
Instances For
selNode is invariant under permutation of the daughter states.
The selection check on a planar tree is the catamorphism of selNode.
Instances For
At a node, selCheckPlanar folds the algebra over the daughters.
selCheckPlanar is Perm-invariant, so it descends to the quotient.
Selection check on the nonplanar carrier.
Equations
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 category of the projecting head, none at exocentric nodes.
Equations
- s.cat? = Option.map (fun (x : Minimalist.LexicalItem.Token) => x.item.cat) s.selHead
Instances For
An object merged with itself has no head.