WG Network Integration #
Connects Core.Inheritance (Hudson's isA/prop network model) to the
dependency grammar module so that word classes and their argument structures
live in a single WG network. @cite{hudson-1984} @cite{hudson-2010}
Argument structures are inherited via default inheritance: a transitive verb inherits from verb, but a passive can override locally (the most specific value wins — what @cite{hudson-2010} later calls the "Best Fit Principle").
Subject-auxiliary inversion is modeled as subtype inheritance: the interrogative auxiliary is a subtype of auxiliary that locally overrides the subject's direction from left to right. This faithfully follows @cite{hudson-1984} pp. 117-118, where the inverted auxiliary is treated as a special subtype of "auxiliary" with its own word-order requirements:
model (interrogative): auxiliary and tensed subject (interrogative): s, interrogative < s
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- DepGrammar.WG.instReprWGNode = { reprPrec := DepGrammar.WG.instReprWGNode.repr }
Equations
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.wordClass a) (DepGrammar.WG.WGNode.wordClass b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.wordClass name) (DepGrammar.WG.WGNode.depRel rel) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.wordClass name) (DepGrammar.WG.WGNode.dir d) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.depRel rel) (DepGrammar.WG.WGNode.wordClass name) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.depRel a) (DepGrammar.WG.WGNode.depRel b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.depRel rel) (DepGrammar.WG.WGNode.dir d) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.dir d) (DepGrammar.WG.WGNode.wordClass name) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.dir d) (DepGrammar.WG.WGNode.depRel rel) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGNode.decEq (DepGrammar.WG.WGNode.dir a) (DepGrammar.WG.WGNode.dir b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- DepGrammar.WG.instBEqWGNode.beq (DepGrammar.WG.WGNode.wordClass a) (DepGrammar.WG.WGNode.wordClass b) = (a == b)
- DepGrammar.WG.instBEqWGNode.beq (DepGrammar.WG.WGNode.depRel a) (DepGrammar.WG.WGNode.depRel b) = (a == b)
- DepGrammar.WG.instBEqWGNode.beq (DepGrammar.WG.WGNode.dir a) (DepGrammar.WG.WGNode.dir b) = (a == b)
- DepGrammar.WG.instBEqWGNode.beq x✝¹ x✝ = false
Instances For
Equations
Equations
- DepGrammar.WG.instReprWGRel = { reprPrec := DepGrammar.WG.instReprWGRel.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- DepGrammar.WG.instDecidableEqWGRel.decEq (DepGrammar.WG.WGRel.argSlot a) (DepGrammar.WG.WGRel.argSlot b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DepGrammar.WG.instDecidableEqWGRel.decEq (DepGrammar.WG.WGRel.argSlot idx) (DepGrammar.WG.WGRel.slotDir idx_1) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGRel.decEq (DepGrammar.WG.WGRel.slotDir idx) (DepGrammar.WG.WGRel.argSlot idx_1) = isFalse ⋯
- DepGrammar.WG.instDecidableEqWGRel.decEq (DepGrammar.WG.WGRel.slotDir a) (DepGrammar.WG.WGRel.slotDir b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
Instances For
Equations
Abbreviation for a WG inheritance network.
Equations
Instances For
Create an isA link between word classes.
Equations
- DepGrammar.WG.isALink child parent = { kind := Core.Inheritance.LinkKind.isA, source := DepGrammar.WG.WGNode.wordClass child, target := DepGrammar.WG.WGNode.wordClass parent }
Instances For
Create a property link for an argument slot's dependency relation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Create a property link for an argument slot's direction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Look up one argument slot from the network for a word class, using
default inheritance. Returns none if the slot is not defined.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Resolve the full argument structure for a word class by collecting slots 0, 1, 2, ... until one is not found. Uses default inheritance, so locally specified slots override inherited ones.
Equations
- DepGrammar.WG.resolveArgStr net wc maxSlots = { slots := DepGrammar.WG.resolveArgStr.go net wc 0 maxSlots [] }
Instances For
A WG network encoding the English auxiliary word-class hierarchy, following @cite{hudson-1984} Ch. 3:
verbhas slot 0 = nsubj/left (subject precedes verb by default)transitiveisAverb, adds slot 1 = obj/rightpassiveisAtransitive, overrides slot 1 to obl/right (by-phrase)auxiliaryisAverb, adds slot 1 = aux/right (main verb)interrogative_auxiliaryisAauxiliary, overrides slot 0 direction to right — the subject follows the auxiliary in questions
The last point is the key to subject-auxiliary inversion: the interrogative
auxiliary is a subtype of auxiliary that locally overrides the subject's
position. Default inheritance does the rest — the interrogative auxiliary
inherits nsubj from verb (via auxiliary) but gets direction = right
from its own local specification. (@cite{hudson-1984} pp. 117-118)
Equations
- One or more equations did not get rendered due to their size.
Instances For
A transitive verb inherits nsubj/left from verb and adds obj/right
locally — the network-derived argStr matches the manual argStr_VN
(modulo optional fields that default).
A passive verb's locally specified slot 1 (obl/right) overrides the inherited transitive slot 1 (obj/right) — default inheritance in action.
The non-inverted auxiliary inherits nsubj/left from verb for slot 0.
The network-derived arg structure for a transitive verb has the same
slots as the manually defined argStr_VN.
The interrogative auxiliary inherits nsubj from verb (via auxiliary)
but its locally specified direction (right) overrides the inherited
direction (left). This is Hudson's subtype analysis of inversion:
the interrogative auxiliary is not a separate lexical rule — it's a
word-class subtype.
The interrogative auxiliary inherits its main-verb slot (aux/right)
from auxiliary without overriding it — only the subject direction
changes.
The full argument structure for the non-inverted auxiliary: nsubj/left (inherited from verb) + aux/right (local).
The full argument structure for the interrogative (inverted) auxiliary: nsubj/right (local override) + aux/right (inherited from auxiliary).
Map clause type to the word class that licenses the auxiliary in that context. Matrix questions require an interrogative auxiliary (subject follows); all other clause types use the default auxiliary (subject precedes).
Equations
- DepGrammar.WG.wordClassForClauseType ClauseType.matrixQuestion = "interrogative_auxiliary"
- DepGrammar.WG.wordClassForClauseType x✝ = "auxiliary"
Instances For
License a dependency tree via the WG network: look up the word class
for the clause type, resolve its argument structure from the network, and
check the tree satisfies it. This is the end-to-end chain:
ClauseType → wordClass → network → argStr → satisfiesArgStr.
Equations
- DepGrammar.WG.wgLicenses net t auxIdx ct = DepGrammar.satisfiesArgStr t auxIdx (DepGrammar.WG.resolveArgStr net (DepGrammar.WG.wordClassForClauseType ct))