Constructional licensing #
A constructional grammar licenses a structure when every constituent in it instantiates some
construction, as for Sag and for Goldberg. Licenses is the local version of that relation
over constituency trees whose leaves are word tokens: every internal node's daughters
instantiate, slot by slot, the typed form of some construction of an inventory
(FormMatches), and words are licensed lexically. A node is licensed by the form of one
construction alone, without the constraints it inherits from the constructions above it in a
network.
Matching reads each word's form, part of speech and features off the token itself. A headed
filler is checked against the immediate daughters, a flat approximation of headedness, and a
semantic filler, which the form cannot check, matches anything. Of the slot constraints only
negMinus bears on the daughter itself: it rejects a daughter of negative polarity, or one with
such a word among its daughters (SlotConstraint.Allows).
Main declarations #
SlotFiller.Matches,SlotConstraint.Allows,Slot.Admits,FormMatches: matching daughters against a formLicensedLocally,Licenses: the licensing relation
References #
A tree is the word of the given form and part of speech.
Equations
- ConstructionGrammar.IsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = (w.form = form ∧ w.cat = cat)
- ConstructionGrammar.IsWord form cat x✝ = False
Instances For
Equations
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = { decide := decide (w.form = form) && decide (w.cat = cat), reflects_decide := ⋯ }
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) (head :: tail)) = isFalse ⋯
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.node a) children) = isFalse ⋯
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.segment a) children) = isFalse ⋯
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.trace a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableIsWord form cat (RoseTree.node (PhraseStructure.Tree.Label.bind a a_1) children) = isFalse ⋯
A tree is a word of negative polarity.
Equations
- ConstructionGrammar.IsNegative (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = (w.features Morphology.Feature.polarity = some UD.Polarity.Neg)
- ConstructionGrammar.IsNegative x✝ = False
Instances For
Equations
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative._aux_1 a w
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) (head :: tail)) = isFalse ⋯
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.node a) children) = isFalse ⋯
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.segment a) children) = isFalse ⋯
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.trace a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidablePredTreeUnitWordIsNegative (RoseTree.node (PhraseStructure.Tree.Label.bind a a_1) children) = isFalse ⋯
A daughter fills a fixed slot when it is a word of that form, an open slot when it is a word of its part of speech, a phrasal slot when it is any phrase, a node or an adjunction structure, and a headed slot when it is a constituent with its head word, of its part of speech, among the daughters.
Equations
- (ConstructionGrammar.SlotFiller.fixed f).Matches (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = (w.form = f)
- (ConstructionGrammar.SlotFiller.open_ c).Matches (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = (w.cat = c)
- ConstructionGrammar.SlotFiller.phrasal.Matches (RoseTree.node (PhraseStructure.Tree.Label.node a) children) = True
- ConstructionGrammar.SlotFiller.phrasal.Matches (RoseTree.node (PhraseStructure.Tree.Label.segment a) children) = True
- (ConstructionGrammar.SlotFiller.headed h c).Matches (RoseTree.node (PhraseStructure.Tree.Label.node a) ts) = ∃ t ∈ ts, ConstructionGrammar.IsWord h c t
- (ConstructionGrammar.SlotFiller.headed h c).Matches (RoseTree.node (PhraseStructure.Tree.Label.segment a) ts) = ∃ t ∈ ts, ConstructionGrammar.IsWord h c t
- (ConstructionGrammar.SlotFiller.semantic a).Matches x✝ = True
- x✝¹.Matches x✝ = False
Instances For
Equations
- One or more equations did not get rendered due to their size.
- ConstructionGrammar.instDecidableMatches ConstructionGrammar.SlotFiller.phrasal (RoseTree.node (PhraseStructure.Tree.Label.node a) children) = isTrue trivial
- ConstructionGrammar.instDecidableMatches ConstructionGrammar.SlotFiller.phrasal (RoseTree.node (PhraseStructure.Tree.Label.segment a) children) = isTrue trivial
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.semantic a) x✝ = isTrue trivial
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.fixed a) (RoseTree.node (PhraseStructure.Tree.Label.terminal a_1 a_2) (head :: tail)) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.fixed a) (RoseTree.node (PhraseStructure.Tree.Label.node a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.fixed a) (RoseTree.node (PhraseStructure.Tree.Label.segment a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.fixed a) (RoseTree.node (PhraseStructure.Tree.Label.trace a_1 a_2) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.fixed a) (RoseTree.node (PhraseStructure.Tree.Label.bind a_1 a_2) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.open_ a) (RoseTree.node (PhraseStructure.Tree.Label.terminal a_1 a_2) (head :: tail)) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.open_ a) (RoseTree.node (PhraseStructure.Tree.Label.node a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.open_ a) (RoseTree.node (PhraseStructure.Tree.Label.segment a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.open_ a) (RoseTree.node (PhraseStructure.Tree.Label.trace a_1 a_2) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.open_ a) (RoseTree.node (PhraseStructure.Tree.Label.bind a_1 a_2) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches ConstructionGrammar.SlotFiller.phrasal (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches ConstructionGrammar.SlotFiller.phrasal (RoseTree.node (PhraseStructure.Tree.Label.trace a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches ConstructionGrammar.SlotFiller.phrasal (RoseTree.node (PhraseStructure.Tree.Label.bind a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.headed a a_1) (RoseTree.node (PhraseStructure.Tree.Label.terminal a_2 a_3) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.headed a a_1) (RoseTree.node (PhraseStructure.Tree.Label.trace a_2 a_3) children) = isFalse ⋯
- ConstructionGrammar.instDecidableMatches (ConstructionGrammar.SlotFiller.headed a a_1) (RoseTree.node (PhraseStructure.Tree.Label.bind a_2 a_3) children) = isFalse ⋯
A daughter respects a slot constraint. negMinus forbids negative polarity, on the daughter
or on a word among its daughters; locMinus and refEmpty concern the slot's external syntax
and semantics and are not checkable against the daughter itself.
Equations
- ConstructionGrammar.SlotConstraint.negMinus.Allows (RoseTree.node (PhraseStructure.Tree.Label.terminal a w) []) = (w.features Morphology.Feature.polarity ≠ some UD.Polarity.Neg)
- ConstructionGrammar.SlotConstraint.negMinus.Allows (RoseTree.node (PhraseStructure.Tree.Label.node a) ts) = ∀ t ∈ ts, ¬ConstructionGrammar.IsNegative t
- ConstructionGrammar.SlotConstraint.negMinus.Allows (RoseTree.node (PhraseStructure.Tree.Label.segment a) ts) = ∀ t ∈ ts, ¬ConstructionGrammar.IsNegative t
- x✝¹.Allows x✝ = True
Instances For
Equations
- One or more equations did not get rendered due to their size.
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.negMinus (RoseTree.node (PhraseStructure.Tree.Label.node a) ts) = ConstructionGrammar.instDecidableAllows._aux_2 a ts
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.negMinus (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) (head :: tail)) = isTrue trivial
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.negMinus (RoseTree.node (PhraseStructure.Tree.Label.trace a a_1) children) = isTrue trivial
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.negMinus (RoseTree.node (PhraseStructure.Tree.Label.bind a a_1) children) = isTrue trivial
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.locMinus x✝ = isTrue trivial
- ConstructionGrammar.instDecidableAllows ConstructionGrammar.SlotConstraint.refEmpty x✝ = isTrue trivial
A daughter instantiates a slot when it fills the slot and respects its constraints.
Equations
- s.Admits t = (s.filler.Matches t ∧ ∀ c ∈ s.constraints, c.Allows t)
Instances For
Equations
- ConstructionGrammar.instDecidableAdmits s t = { decide := decide (s.filler.Matches t) && decide (∀ c ∈ s.constraints, c.Allows t), reflects_decide := ⋯ }
A daughter sequence instantiates a typed form, slot by slot.
Equations
- ConstructionGrammar.FormMatches form ts = List.Forall₂ ConstructionGrammar.Slot.Admits form ts
Instances For
Equations
A node is licensed locally when a word, or when its daughters instantiate the form of some construction of the inventory; traces and binders are not.
Equations
- ConstructionGrammar.LicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) []) = True
- ConstructionGrammar.LicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.node a) ts) = ∃ c ∈ cxns, ConstructionGrammar.FormMatches c.form ts
- ConstructionGrammar.LicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.segment a) ts) = ∃ c ∈ cxns, ConstructionGrammar.FormMatches c.form ts
- ConstructionGrammar.LicensedLocally cxns x✝ = False
Instances For
Equations
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) []) = isTrue trivial
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.node a) ts) = ConstructionGrammar.instDecidableLicensedLocally._aux_1 cxns a ts
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.segment a) ts) = ConstructionGrammar.instDecidableLicensedLocally._aux_3 cxns a ts
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.terminal a a_1) (head :: tail)) = isFalse ⋯
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.trace a a_1) children) = isFalse ⋯
- ConstructionGrammar.instDecidableLicensedLocally cxns (RoseTree.node (PhraseStructure.Tree.Label.bind a a_1) children) = isFalse ⋯
The inventory licenses a tree when every constituent in it is licensed locally.
Equations
- ConstructionGrammar.Licenses cxns t = ∀ s ∈ RoseTree.subtrees t, ConstructionGrammar.LicensedLocally cxns s