Equations
- Minimalism.instReprCat = { reprPrec := Minimalism.instReprCat.repr }
Equations
- Minimalism.instReprCat.repr Minimalism.Cat.V prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.V")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.N prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.N")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.A prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.A")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.P prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.P")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.D prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.D")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.T prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.T")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.C prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.C")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.v prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.v")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.n prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.n")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.a")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Place prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Place")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Path prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Path")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Num prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Num")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Q prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Q")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Voice prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Voice")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Appl prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Appl")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Foc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Foc")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Top prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Top")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Fin prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Fin")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.SA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.SA")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Force prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Force")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Neg prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Neg")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Mod prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Mod")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Rel prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Rel")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Pol prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Pol")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Asp prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Asp")).group prec✝
- Minimalism.instReprCat.repr Minimalism.Cat.Evid prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.Cat.Evid")).group prec✝
Instances For
Equations
Instances For
Selectional stack consumed left-to-right
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Minimalism.instReprSimpleLI = { reprPrec := Minimalism.instReprSimpleLI.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Create a simple (non-complex) LI
Equations
Instances For
Get the outer (projecting) category of an LI
Instances For
Is this LI complex (result of head-to-head movement)?
Instances For
Combine two LIs for head-to-head movement (target reprojects)
Instances For
Equations
- Minimalism.instReprLIToken = { reprPrec := Minimalism.instReprLIToken.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Syntactic object: LI token or set of two SOs (Definition 11)
- leaf : LIToken → SyntacticObject
- node : SyntacticObject → SyntacticObject → SyntacticObject
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Minimalism.instDecidableEqSyntacticObject.decEq (Minimalism.SyntacticObject.leaf a) (Minimalism.SyntacticObject.leaf b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Minimalism.instDecidableEqSyntacticObject.decEq (Minimalism.SyntacticObject.leaf a) (a_1.node a_2) = isFalse ⋯
- Minimalism.instDecidableEqSyntacticObject.decEq (a.node a_1) (Minimalism.SyntacticObject.leaf a_2) = isFalse ⋯
Instances For
Instances For
Instances For
Equations
- (Minimalism.SyntacticObject.leaf a).getLIToken = some a
- (a.node a_1).getLIToken = none
Instances For
Equations
- (Minimalism.SyntacticObject.leaf a).getConstituents = none
- (a.node a_1).getConstituents = some (a, a_1)
Instances For
Merge: the fundamental structure-building operation (Definition 12)
Equations
- Minimalism.merge x y = x.node y
Instances For
Equations
- Minimalism.validMerge x y = (x ≠ y)
Instances For
Equations
- Minimalism.externalMerge x y _h = Minimalism.merge x y
Instances For
Equations
- Minimalism.internalMerge target mover _h = Minimalism.merge mover target
Instances For
Create a leaf SO from category and selection
Equations
- Minimalism.mkLeaf cat sel id = Minimalism.SyntacticObject.leaf { item := Minimalism.LexicalItem.simple cat sel, id := id }
Instances For
Create a leaf SO with a phonological form
Equations
- Minimalism.mkLeafPhon cat sel phon id = Minimalism.SyntacticObject.leaf { item := Minimalism.LexicalItem.simple cat sel phon, id := id }
Instances For
Map UD UPOS tags to Minimalist categories.
This bridges the theory-neutral UD POS tags used in Core/Basic.lean and Fragments/ to the Minimalist Cat system.
Equations
- Minimalism.uposToCat UD.UPOS.VERB = Minimalism.Cat.V
- Minimalism.uposToCat UD.UPOS.AUX = Minimalism.Cat.T
- Minimalism.uposToCat UD.UPOS.NOUN = Minimalism.Cat.N
- Minimalism.uposToCat UD.UPOS.PROPN = Minimalism.Cat.N
- Minimalism.uposToCat UD.UPOS.ADJ = Minimalism.Cat.A
- Minimalism.uposToCat UD.UPOS.ADP = Minimalism.Cat.P
- Minimalism.uposToCat UD.UPOS.DET = Minimalism.Cat.D
- Minimalism.uposToCat UD.UPOS.SCONJ = Minimalism.Cat.C
- Minimalism.uposToCat UD.UPOS.CCONJ = Minimalism.Cat.C
- Minimalism.uposToCat x✝ = Minimalism.Cat.N
Instances For
Linearize a SyntacticObject by collecting leaf LITokens in
left-to-right traversal order.
Equations
Instances For
Extract the phonological form from an LIToken.
Equations
- tok.phonForm = (Option.map (fun (x : Minimalism.SimpleLI) => x.phonForm) tok.item.features.head?).getD ""
Instances For
phonYield and linearize agree: phonYield extracts the non-empty phonological forms from the linearization.
Create a trace SO. Traces are leaves with a distinguished sentinel:
cat = N, sel = [], phonForm = "", and id = index + 10000.
This encoding is detectable via isTrace.
Equations
- Minimalism.mkTrace index = Minimalism.SyntacticObject.leaf { item := Minimalism.LexicalItem.simple Minimalism.Cat.N [], id := index + 10000 }
Instances For
Detect if an SO is a trace (created via mkTrace). Returns the trace index if so.
Equations
Instances For
Instances For
Equations
Instances For
Instances For
Count nodes (Merge operations) in an SO
Equations
Instances For
Equations
Instances For
Every terminal node is a leaf.
Every terminal is a subterm.
The root is always in its own subterms.
X immediately contains Y iff Y is a member of X
"X immediately contains Y iff X = {Y, Z} for some SO Z"
Since our SOs are binary sets, this means Y is one of the two immediate daughters of X.
Equations
- Minimalism.immediatelyContains (Minimalism.SyntacticObject.leaf a) y = False
- Minimalism.immediatelyContains (a.node a_1) y = (y = a ∨ y = a_1)
Instances For
Decidable immediate containment
Equations
- One or more equations did not get rendered due to their size.
Containment is the transitive closure of immediate containment
"X contains Y iff X immediately contains Y or X immediately contains some SO Z such that Z contains Y"
This is standard syntactic dominance.
- imm (x y : SyntacticObject) : immediatelyContains x y → contains x y
- trans (x y z : SyntacticObject) : immediatelyContains x z → contains z y → contains x y
Instances For
Immediate containment implies containment
Containment is transitive
Leaves contain nothing
Immediate containment strictly decreases nodeCount
Containment strictly decreases nodeCount
No element contains itself (containment is irreflexive)
Boolean containment check: does x (strictly) contain y?
Equations
- Minimalism.containsB (Minimalism.SyntacticObject.leaf a) x✝ = false
- Minimalism.containsB (a.node b) x✝ = (a == x✝ || b == x✝ || Minimalism.containsB a x✝ || Minimalism.containsB b x✝)
Instances For
Boolean and propositional containment are equivalent.
X is a term of Y iff X = Y or Y contains X
"X is a term of SO Y iff X = Y or Y contains X"
This is useful for stating when an element is "somewhere in" a structure
Equations
- Minimalism.isTermOf x y = (x = y ∨ Minimalism.contains y x)
Instances For
Every SO is a term of itself
If Y contains X, then X is a term of Y
Reflexive containment (useful for stating constraints)
Equations
- Minimalism.containsOrEq x y = (x = y ∨ Minimalism.contains x y)
Instances For
Every SO reflexively contains itself
Reflexive containment is transitive
X and Y are sisters IN tree root: they are distinct co-daughters of
some node that is a subterm of root.
Equations
- Minimalism.areSistersIn root x y = ∃ (z : Minimalism.SyntacticObject), z ∈ Minimalism.subterms root ∧ Minimalism.immediatelyContains z x ∧ Minimalism.immediatelyContains z y ∧ x ≠ y
Instances For
X c-commands Y IN tree root: X has a sister (in root) that
contains-or-equals Y.
Equations
- Minimalism.cCommandsIn root x y = ∃ (z : Minimalism.SyntacticObject), Minimalism.areSistersIn root x z ∧ Minimalism.containsOrEq z y
Instances For
X asymmetrically c-commands Y in tree root.
Equations
- Minimalism.asymCCommandsIn root x y = (Minimalism.cCommandsIn root x y ∧ ¬Minimalism.cCommandsIn root y x)
Instances For
Boolean c-command check: does x c-command y in tree root?
Searches all subterms of root for a parent node whose children
include x and some sibling z where z equals or contains y.
Mirrors cCommandsIn but is decidable by computation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Tree Shape — abstract geometry ignoring terminal labels #
Abstract tree geometry: the shape of a SyntacticObject with all
terminal labels erased. Two SOs are structurally isomorphic iff
they have the same TreeShape.
Instances For
Equations
- Minimalism.instReprTreeShape = { reprPrec := Minimalism.instReprTreeShape.repr }
Equations
- One or more equations did not get rendered due to their size.
- Minimalism.instReprTreeShape.repr Minimalism.TreeShape.leaf prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Minimalism.TreeShape.leaf")).group prec✝
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Minimalism.instDecidableEqTreeShape.decEq Minimalism.TreeShape.leaf Minimalism.TreeShape.leaf = isTrue ⋯
- Minimalism.instDecidableEqTreeShape.decEq Minimalism.TreeShape.leaf (a.node a_1) = isFalse ⋯
- Minimalism.instDecidableEqTreeShape.decEq (a.node a_1) Minimalism.TreeShape.leaf = isFalse ⋯
Instances For
Equations
Instances For
Equations
Strip labels from a syntactic object, yielding its abstract shape.
Equations
- (Minimalism.SyntacticObject.leaf a).shape = Minimalism.TreeShape.leaf
- (a.node a_1).shape = a.shape.node a_1.shape
Instances For
Two syntactic objects are structurally isomorphic iff they have the same tree shape (ignoring all terminal labels).
Equations
- Minimalism.structurallyIsomorphic x y = (x.shape == y.shape)