Syntactic objects #
A syntactic object is a binary rooted tree with leaves labelled by the lexical alphabet and no
labels at internal vertices: an element of the free non-associative commutative magma on SO₀. This
file builds two carriers for it over one alphabet of vertices, Vertex, an option of a token on
either side. The left summand is structure: a lexical item Vertex.lex tok on a leaf, or the
bare label Vertex.bare on a binary internal node. The right summand is a trace: the index-free
Vertex.trace, or the trace Vertex.traceOf tok of a token, the cancellation T/T_v remembering
the head of T_v. Traces are exactly the right summand, the convention of the trace coproduct.
SyntacticObject is the well-formed unordered tree over Vertex, the object Merge builds, and
PlanarSyntacticObject the well-formed ordered tree, [MCB25]'s planar
embedding, the form linearization and PF read. Well-formedness is a local condition, each vertex
licensing its children (Vertex.Licenses), so it descends to the quotient;
PlanarSyntacticObject.toSyntacticObject forgets the order and is a homomorphism for the vocabulary
the two carriers share, leaf, trace, traceOf and merge.
Main definitions #
Minimalist.SyntacticObject.Vertex,Minimalist.IsSyntacticObjectMinimalist.SyntacticObject,Minimalist.PlanarSyntacticObject: the unordered and the ordered carrier, each withleaf,trace,traceOfandmerge.Minimalist.PlanarSyntacticObject.toSyntacticObject: forgetting the order.
Main results #
Minimalist.SyntacticObject.ind,exists_form: induction and case analysis over the shapes.Minimalist.PlanarSyntacticObject.toSyntacticObject_merge: forgetting the order commutes with Merge.
References #
- [MCB25], §1.1 (Definition 1.1.1, §1.1.3), §1.2 (Definitions 1.2.1, 1.2.6) and §1.12
A vertex carries structure on the left, a lexical token or the bare internal label, and a trace on the right, index-free or of a token.
Equations
Instances For
The lexical item tok on a leaf.
Equations
- Minimalist.SyntacticObject.Vertex.lex tok = Sum.inl (some tok)
Instances For
The bare label of a binary internal node.
Equations
- Minimalist.SyntacticObject.Vertex.bare = Sum.inl none
Instances For
The index-free trace.
Equations
- Minimalist.SyntacticObject.Vertex.trace = Sum.inr none
Instances For
The trace of the token tok.
Equations
- Minimalist.SyntacticObject.Vertex.traceOf tok = Sum.inr (some tok)
Instances For
Well-formedness #
A vertex licenses its children when a lexical item or a trace has none and the bare label has two.
Equations
- Minimalist.SyntacticObject.Vertex.Licenses (Sum.inl (some val)) x✝ = (x✝ = 0)
- Minimalist.SyntacticObject.Vertex.Licenses (Sum.inl none) x✝ = (x✝.card = 2)
- Minimalist.SyntacticObject.Vertex.Licenses (Sum.inr val) x✝ = (x✝ = 0)
Instances For
Equations
- Minimalist.SyntacticObject.instDecidableLicenses (Sum.inl (some val)) x✝ = Minimalist.SyntacticObject.instDecidableLicenses._aux_1 val x✝
- Minimalist.SyntacticObject.instDecidableLicenses (Sum.inl none) x✝ = { decide := x✝.card.beq 2, reflects_decide := ⋯ }
- Minimalist.SyntacticObject.instDecidableLicenses (Sum.inr val) x✝ = Minimalist.SyntacticObject.instDecidableLicenses._aux_4 val x✝
An unordered tree over Vertex is a syntactic object when every vertex licenses its
children, so that lexical items and traces are leaves and bare vertices are binary.
Equations
Instances For
A leaf carrying a lexical item or a trace is a syntactic object.
A bare binary node is a syntactic object exactly when both daughters are.
A node of a syntactic object has either no children or exactly two.
A node of a syntactic object with children is bare.
The vertices of a syntactic object have zero or two children.
Equations
- Minimalist.instDecidableEqSyntacticObject = Subtype.instDecidableEq
Equations
- Minimalist.instDecidableEqPlanarSyntacticObject = Subtype.instDecidableEq
The shapes #
A lexical leaf.
Equations
- ↑tok = ⟨UnorderedTree.leaf (Minimalist.SyntacticObject.Vertex.lex tok), ⋯⟩
Instances For
The trace of tok.
Equations
Instances For
A bare binary node is a syntactic object exactly when both daughters are.
Merge on the carrier, the bare binary node over two syntactic objects, also written *.
Noncomputable, since it goes through the smart constructor UnorderedTree.node; concrete
results are built ordered and forgotten by PlanarSyntacticObject.toSyntacticObject.
Equations
- l.merge r = ⟨UnorderedTree.node Minimalist.SyntacticObject.Vertex.bare {↑l, ↑r}, ⋯⟩
Instances For
Merge of two ordered-built objects is the ordered binary node, so concrete results reduce.
A lexical leaf.
Equations
- ↑tok = ⟨RoseTree.node (Minimalist.SyntacticObject.Vertex.lex tok) [], ⋯⟩
Instances For
The index-free trace.
Equations
Instances For
The trace of tok.
Equations
Instances For
Merge, with the daughters in the given order.
Equations
- l.merge r = ⟨RoseTree.node Minimalist.SyntacticObject.Vertex.bare [↑l, ↑r], ⋯⟩
Instances For
Forgetting the order is the quotient map to the syntactic object.
Equations
- ↑p = ⟨UnorderedTree.mk ↑p, ⋯⟩
Instances For
Forgetting the order commutes with Merge.
Induction and case analysis #
Induction on syntactic objects, each of which is a lexical leaf, a trace, or the Merge of two syntactic objects.
Every syntactic object is a lexical leaf, a trace, or a Merge.