Entailment Closure on Roots #
@cite{beavers-koontz-garboden-2020}
Root.entailments is the base entailment set: atoms asserted directly
by the lexicographer. But @cite{beavers-koontz-garboden-2020}'s typology
treats roots as networks of entailments, where some atoms entail
others. The closure of the base under such network rules is the root's
full entailment set.
This file provides:
EntailmentRules: a functionLexEntailment → List LexEntailmentgiving the atoms each premise atom directly entails.closeOnce: one closure step (single inference round).closure: alias forcloseOnce— kept as the public API. For the currently-codified rules a single step is a fixpoint (closure_bkgRules_idempotent); if a chaining rule is added later, redefineclosureasNat.iterate closeOnce nand re-prove idempotence at the new bound.bkgRules: the documented B&K-G rules. Currently a single rule:becomesState s ⇒ hasState s(a change-of-state tosentails the resulting state attributions).Root.closedEntailmentsandRoot.closedFeatureSignature: the closure-derived counterparts ofentailments/featureSignature.
The infrastructure is designed so that adding a new B&K-G inference
(e.g., volitional ⇒ sentient, contact ⇒ motion) is a one-line
extension to bkgRules.
A rule set: each atom maps to the atoms it directly entails.
Equations
Instances For
One closure step: adjoin to atoms everything any rule fires from
an atom in atoms. Result is atoms followed by all derived atoms.
Duplicates are not removed (they are inert under List.any /
List.contains queries used downstream).
Equations
- Semantics.Lexical.Roots.closeOnce rules atoms = atoms ++ List.flatMap rules atoms
Instances For
The documented B&K-G entailment rules. Currently:
becomesState s ⇒ hasState s: a change of state tosentails thatsholds at the post-state, so the root attributess.
Other candidate rules (volitional ⇒ sentient, contact ⇒ motion)
are debated in the literature and intentionally omitted until they
can be argued for from primary sources.
Equations
Instances For
Every atom produced by bkgRules is a state-attribution.
The B&K-G closure of the root's base entailments.
Equations
Instances For
The feature signature computed over the closure of the root's
entailments. For the current bkgRules, this differs from
featureSignature only in the state field: any root with a
becomesState atom in its base set acquires state = true.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Closure preserves all base atoms: the base list is a prefix of the closure.
Adding the closure step never makes any p go from true to
false — closure is monotone for List.any.
Closed and base signatures agree on manner.
Closed and base signatures agree on result.
Closed and base signatures agree on cause.
Closure can only add state: if the base says state = true, the
closure agrees; if base says false, closure may say true.
The principal closure consequence: every becomesState s in the
base entailment set forces state = true in the closed signature.
Closure adds state atoms exactly when the base set has a
becomesState atom. So the closed state field is the disjunction
of base state and base result.
bkgRules produces nothing from a hasState atom (and similarly
nothing from any non-becomesState atom).
If every atom in atoms is a hasState, flatMap bkgRules is empty.
After one flatMap bkgRules, every atom is a state-attribution, so a
further flatMap bkgRules produces nothing.
closeOnce bkgRules is idempotent up to List.any queries — a
second application adds duplicate copies of state atoms, but no new
distinct atoms. This is the precise sense in which closure := closeOnce
suffices for the downstream Root.closedFeatureSignature API.