Terms, containment, and c-command #
This file develops the theory of terms of syntactic objects: containment as a closure of the daughter relation, the multisets of terms and accessible terms that enumerate it, and sisterhood and c-command relative to a root. Containment lowers the vertex count, which makes it a well-founded strict order and decides it.
Main definitions #
SyntacticObject.ImmediatelyContains:ximmediately containsywhenyis a root daughter ofx.SyntacticObject.Contains: the transitive closure of immediate containment.SyntacticObject.ContainsOrEq: the reflexive transitive closure of immediate containment.SyntacticObject.terms: the terms of an object, itself included, one per vertex.SyntacticObject.accessibleTerms: the terms at the non-root vertices, the accessible terms of [MCB25].SyntacticObject.Sisters:xandyare sisters inrootwhen they are distinct daughters of one term ofroot.SyntacticObject.CCommands:xc-commandsyinrootwhen a sister ofxreflexively containsy([Rei76]).SyntacticObject.AsymmCCommands: c-command in one direction only.SyntacticObject.cCommandDomain: the c-command domain ofxinroot, the terms it c-commands.
Main results #
SyntacticObject.mem_terms,mem_accessibleTerms: the terms ofxare the objects it reflexively contains, and the accessible terms those it strictly contains.SyntacticObject.wellFounded_flip_contains: the proper term relation is well-founded.SyntacticObject.card_accessibleTerms: one accessible term per edge.
Implementation notes #
Syntactic objects are values, not occurrences: a term sitting at two vertices is one object of
multiplicity two in terms, and containment and c-command relate values, so the two
daughters of merge x x are not sisters.
References #
Immediate containment #
Containment #
Containment, the transitive closure of immediate containment.
Equations
- Minimalist.SyntacticObject.Contains = Relation.TransGen Minimalist.SyntacticObject.ImmediatelyContains
Instances For
Reflexive containment, the reflexive transitive closure of immediate containment.
Equations
- Minimalist.SyntacticObject.ContainsOrEq = Relation.ReflTransGen Minimalist.SyntacticObject.ImmediatelyContains
Instances For
The vertex count grades containment #
Being a proper term is well-founded: an object has finitely many terms.
Terms #
The subtrees of a syntactic object are its terms, hence syntactic objects.
The terms of a syntactic object, itself included.
Instances For
The terms of x are the objects it reflexively contains.
One term per vertex.
Equations
- x.instDecidableContainsOrEq y = decidable_of_iff (y ∈ x.terms) ⋯
Accessible terms #
The accessible terms, the terms at the non-root vertices.
Equations
- s.accessibleTerms = s.terms.erase s
Instances For
The accessible terms of x are the objects it contains.
One accessible term per edge.
Equations
- x.instDecidableContains y = decidable_of_iff (y ∈ x.accessibleTerms) ⋯
C-command #
x and y are sisters in root when they are distinct daughters of some term of
root.
Equations
- root.Sisters x y = ∃ z ∈ root.terms, z.ImmediatelyContains x ∧ z.ImmediatelyContains y ∧ x ≠ y
Instances For
Equations
- root.instDecidableSisters x y = Multiset.decidableExistsMultiset
x c-commands y in root when a sister of x contains or equals y.
Equations
- root.CCommands x y = ∃ z ∈ root.terms, root.Sisters x z ∧ z.ContainsOrEq y
Instances For
Equations
- root.instDecidableCCommands x y = Multiset.decidableExistsMultiset
Sisters c-command each other.
A c-commanded object is a term of the root.
The c-command domain of x in root, the search space of a probe sitting at x.
Equations
- root.cCommandDomain x = Multiset.filter (root.CCommands x) root.terms
Instances For
x c-commands y in root and y does not c-command x.
Equations
- root.AsymmCCommands x y = (root.CCommands x y ∧ ¬root.CCommands y x)
Instances For
Equations
- root.instDecidableAsymmCCommands x y = { decide := decide (root.CCommands x y) && decide ¬root.CCommands y x, reflects_decide := ⋯ }
Sisters never asymmetrically c-command each other.