Lexical Rules for Word Grammar @cite{hudson-2010} #
Lexical rules derive new lexical entries from existing ones, following Word Grammar and HPSG @cite{pollard-sag-1994}. The two rules formalised here are central to the @cite{hudson-2010} treatment of English auxiliaries (also discussed in @cite{gibson-2025}):
- Auxiliary Inversion:
V+aux → V+aux,+inv(subject moves from left to right — Hudson treats this as a word-class subtype, not a movement rule; seeWordGrammar.Network.englishAuxNet'sinverted_auxiliarynode). - Passive:
VN → V+passive(object promoted, subject demoted to by-phrase).
A third rule — Dative Alternation — is mentioned in the literature but not formalised here.
A lexical entry: word form + category + features + argument structure.
Uses the shared Features bundle from Core/Basic.lean.
The inv field is DG-specific (auxiliary inversion state).
- form : String
- cat : UD.UPOS
- features : Features
- argStr : DepGrammar.ArgStr
- inv : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- WordGrammar.instReprLexEntry = { reprPrec := WordGrammar.instReprLexEntry.repr }
Auxiliary verb (non-inverted): subject left, main verb right
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary verb (inverted): subject right, main verb right
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary Inversion Rule: V+aux,-inv → V+aux,+inv The subject moves from left to right position
Equations
- One or more equations did not get rendered due to their size.
Instances For
Passive Rule: VN → V+passive Object is removed (promoted to subject), by-phrase added as optional
Equations
- One or more equations did not get rendered due to their size.
Instances For
Apply a lexical rule if it matches
Equations
- WordGrammar.applyRule rule entry = if rule.applies entry = true then some (rule.transform entry) else none
Instances For
Apply all applicable rules to generate derived entries
Equations
- WordGrammar.deriveEntries rules entry = entry :: List.filterMap (fun (x : WordGrammar.LexRule) => WordGrammar.applyRule x entry) rules