Constructional inheritance #
Computational content for the two modes of constructional inheritance
distinguished by [Gol95] §3.3.1 (the InheritanceMode enum in
ConstructionGrammar.Basic), grounded in the flat feature-slot order:
in the complete mode representations must strictly unify (Compat,
PartialUnify.unify — the regime [KF99] built their formal
CxG on and [Sag12]'s SBCG inherits from HPSG), while in the default
mode the inheriting construction overrides its parents ([Die23]
Table 2; the default-unification tradition of
[LC99]): inheritField is the priority union
(Flat.or) of the child's slot with its parents' unification
(PartialUnify.unifyList), so a parental conflict the child does not
legislate leaves the slot unspecified.
Main declarations #
inheritField,ResolvesField: default-mode slot semanticsinheritField_of_compat: the two modes agree absent conflictConstructicon.parentsOf,derivedSpec,ResolvesAll,WellFormed: inheritance computed through a constructicon's links, generic in the specification typeinheritFieldUnique,Constructicon.derivedField: inheritance for slots without decidable equality (e.g. denotations)
Default-mode slot algebra #
A specification slot is a Flat-ordered partial value: ⊥ is
"unspecified", and inheritance fills unspecified slots from parents.
Normal-mode (default) inheritance for one slot ([Gol95] §3.3.1; [Die23] Table 2: "low-level representations override high-level representations if there is a conflict"; [LC99]): the inheriting construction's own value wins; an unspecified slot takes its parents' unification when it exists; a parental conflict the child does not legislate leaves the slot unspecified.
Equations
- ConstructionGrammar.inheritField own parents = own.or ((PartialUnify.unifyList parents).getD ⊥)
Instances For
The child legislates wherever its parents conflict — [Gol95]'s normal mode: "conflicts are addressed by the inheriting construction, which specifies its own constraints".
Equations
- ConstructionGrammar.ResolvesField own parents = (PartialUnify.unifyList parents = none → own ≠ ⊥)
Instances For
Equations
- ConstructionGrammar.instDecidableResolvesField own parents = ConstructionGrammar.instDecidableResolvesField._aux_1 own parents
Absent conflict, normal-mode inheritance agrees with strict (complete-mode) unification: with compatible parents the inherited value is the priority union of child and parents. Normal mode departs from complete inheritance only at genuine conflicts.
Compatible parents impose no resolution burden on the child.
Inheritance through a constructicon #
A specification assignment maps each construction to its own
(conflict-resolving) specification; the network then computes each
construction's full specification by normal-mode inheritance from the
parents its links name. The walk is generic in the specification type:
record-valued specifications supply their componentwise inherit and
Resolves lifts.
The constructions a network's links name as parents of name.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constructions a network's links name as children of name.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every link endpoint resolves to a construction in the network — no dangling name-keyed links.
Equations
- cx.WellFormed = ∀ l ∈ cx.links, (∃ c ∈ cx.constructions, c.name = l.parent) ∧ ∃ c ∈ cx.constructions, c.name = l.child
Instances For
Normal-mode derived specification of c in the network: c's own
specification wins; fields it leaves open are filled from the parents its
links name ([Die23] Table 2's default mode, computed over the
links rather than stipulated per node).
Equations
- cx.derivedSpec inherit own c = inherit (own c) (List.map own (cx.parentsOf c.name))
Instances For
Normal-mode well-formedness of the whole network: every construction legislates every field its parents conflict on.
Equations
- cx.ResolvesAll resolves own = ∀ c ∈ cx.constructions, resolves (own c) (List.map own (cx.parentsOf c.name))
Instances For
Equations
- ConstructionGrammar.instDecidableResolvesAll cx resolves own = ConstructionGrammar.instDecidableResolvesAll._aux_1 cx resolves own
Inheritance of denotation-valued fields #
Denotations (e.g. PartialProp-valued pragmatic contributions) have no
decidable equality, so agreeing parents cannot be reconciled by
unification. inheritFieldUnique inherits when exactly one parent
supplies a value — sufficient for single-mother inheritance, the
configuration of conventional-subtype links.
Normal-mode inheritance for one field without decidable equality:
the child's own value wins; an unspecified field takes the value of the
unique supplying parent; multiple suppliers (which inheritField could
reconcile when they agree) yield none.
Equations
- ConstructionGrammar.inheritFieldUnique (some x_1) parents = some x_1
- ConstructionGrammar.inheritFieldUnique none parents = some x_1
- ConstructionGrammar.inheritFieldUnique none parents = none
Instances For
Derived value of a denotation-valued field for c in the network:
c's own value wins; otherwise the value of the unique supplying
parent.
Equations
- cx.derivedField own c = ConstructionGrammar.inheritFieldUnique (own c) (List.map own (cx.parentsOf c.name))