Natural Logic Relations and Entailment Signatures #
@cite{icard-2012} @cite{maccartney-manning-2009}
Framework-agnostic infrastructure for the natural logic relation algebra and entailment signatures, following @cite{icard-2012} "Inclusion and Exclusion in Natural Language."
Contents #
- NLRelation — 7 natural logic relations (≡, ⊑, ⊒, ^, |, ⌣, #)
- EntailmentSig — 9 entailment signatures unifying monotonicity/additivity
Key operations #
NLRelation.join(⋈): determines resultant relation from chained inferencesEntailmentSig.compose(∘): composes entailment signaturesEntailmentSig.project([]^φ): projects a relation through a function of signature φ
Algebraic structure #
NLRelationcarries aPartialOrder+BoundedOrder(≡ = ⊥, # = ⊤)EntailmentSigcarries aPartialOrder+OrderBot(all = ⊥) +Monoid(compose)
The seven basic set-theoretic relations between denotations (@cite{maccartney-manning-2009}, @cite{icard-2012} §1).
| Symbol | Name | Set relation | Example |
|---|---|---|---|
| ≡ | equivalence | A = B | couch / sofa |
| ⊑ | forward | A ⊂ B | dog / animal |
| ⊒ | reverse | A ⊃ B | animal / dog |
| ^ | negation | A ∩ B = ∅, A ∪ B = U | happy / unhappy |
| | | alternation | A ∩ B = ∅ | cat / dog |
| ⌣ | cover | A ∪ B = U | animal / nondog |
| # | independent | all other cases | hungry / tall |
- equiv : NLRelation
- forward : NLRelation
- reverse : NLRelation
- negation : NLRelation
- alternation : NLRelation
- cover : NLRelation
- independent : NLRelation
Instances For
Equations
- Core.NaturalLogic.instBEqNLRelation.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Informativity ordering on NL relations.
R ≤ R' means R is at least as informative as R'. The lattice has ≡ at the bottom (most informative) and # at the top (least informative).
Key: ^ (negation) refines both | (alternation) and ⌣ (cover), because knowing sets are complementary tells you both that they're disjoint (|) and exhaustive (⌣).
Equations
- Core.NaturalLogic.NLRelation.equiv.refines x✝ = true
- Core.NaturalLogic.NLRelation.forward.refines Core.NaturalLogic.NLRelation.forward = true
- Core.NaturalLogic.NLRelation.forward.refines Core.NaturalLogic.NLRelation.alternation = true
- Core.NaturalLogic.NLRelation.forward.refines Core.NaturalLogic.NLRelation.cover = true
- Core.NaturalLogic.NLRelation.forward.refines Core.NaturalLogic.NLRelation.independent = true
- Core.NaturalLogic.NLRelation.reverse.refines Core.NaturalLogic.NLRelation.reverse = true
- Core.NaturalLogic.NLRelation.reverse.refines Core.NaturalLogic.NLRelation.alternation = true
- Core.NaturalLogic.NLRelation.reverse.refines Core.NaturalLogic.NLRelation.cover = true
- Core.NaturalLogic.NLRelation.reverse.refines Core.NaturalLogic.NLRelation.independent = true
- Core.NaturalLogic.NLRelation.negation.refines Core.NaturalLogic.NLRelation.negation = true
- Core.NaturalLogic.NLRelation.negation.refines Core.NaturalLogic.NLRelation.alternation = true
- Core.NaturalLogic.NLRelation.negation.refines Core.NaturalLogic.NLRelation.cover = true
- Core.NaturalLogic.NLRelation.negation.refines Core.NaturalLogic.NLRelation.independent = true
- Core.NaturalLogic.NLRelation.alternation.refines Core.NaturalLogic.NLRelation.alternation = true
- Core.NaturalLogic.NLRelation.alternation.refines Core.NaturalLogic.NLRelation.independent = true
- Core.NaturalLogic.NLRelation.cover.refines Core.NaturalLogic.NLRelation.cover = true
- Core.NaturalLogic.NLRelation.cover.refines Core.NaturalLogic.NLRelation.independent = true
- Core.NaturalLogic.NLRelation.independent.refines Core.NaturalLogic.NLRelation.independent = true
- x✝¹.refines x✝ = false
Instances For
Equations
- Core.NaturalLogic.NLRelation.instLE = { le := fun (a b : Core.NaturalLogic.NLRelation) => a.refines b = true }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Core.NaturalLogic.NLRelation.instPartialOrder = { toPreorder := Core.NaturalLogic.NLRelation.instPreorder, le_antisymm := ⋯ }
Equations
Equations
- Core.NaturalLogic.NLRelation.instBoundedOrder = { toOrderTop := inferInstanceAs (OrderTop Core.NaturalLogic.NLRelation), toOrderBot := inferInstanceAs (OrderBot Core.NaturalLogic.NLRelation) }
Join operation ⋈ (@cite{icard-2012}, Lemma 1.5).
Given xRy and yR'z, determines the strongest relation x(R⋈R')z. This is the "join" in the relation algebra sense (not lattice join).
Equations
- Core.NaturalLogic.NLRelation.equiv.join x✝ = x✝
- x✝.join Core.NaturalLogic.NLRelation.equiv = x✝
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.forward = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.reverse = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.negation = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.alternation = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.cover = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.NLRelation.forward.join Core.NaturalLogic.NLRelation.independent = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.forward = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.reverse = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.negation = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.alternation = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.cover = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.reverse.join Core.NaturalLogic.NLRelation.independent = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.forward = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.reverse = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.negation = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.alternation = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.cover = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.NLRelation.negation.join Core.NaturalLogic.NLRelation.independent = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.forward = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.reverse = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.negation = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.alternation = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.cover = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.NLRelation.alternation.join Core.NaturalLogic.NLRelation.independent = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.forward = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.reverse = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.negation = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.alternation = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.cover = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.cover.join Core.NaturalLogic.NLRelation.independent = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.NLRelation.independent.join x✝ = Core.NaturalLogic.NLRelation.independent
Instances For
≡ is the identity for join.
Entailment signature.
An entailment signature classifies a function by its algebraic properties with respect to ∨ and ∧. This unifies the separate monotonicity and additivity hierarchies into one 9-element lattice.
| Symbol | Name | Properties |
|---|---|---|
| • | all | Preserves all 7 relations |
| + | mono | Monotone (= UE) |
| − | anti | Antitone (= DE) |
| ⊕ | additive | f(A∨B)=f(A)∨f(B), f(⊤)=⊤ |
| ◇ | antiAdd | f(A∨B)=f(A)∧f(B) |
| ⊞ | mult | f(A∧B)=f(A)∧f(B), f(⊥)=⊥ |
| ⊟ | antiMult | f(A∧B)=f(A)∨f(B), f(⊥)=⊤ |
| ⊕⊞ | addMult | Additive + Multiplicative |
| ◇⊟ | antiAddMult | Anti-additive + Anti-mult |
- all : EntailmentSig
- mono : EntailmentSig
- anti : EntailmentSig
- additive : EntailmentSig
- antiAdd : EntailmentSig
- mult : EntailmentSig
- antiMult : EntailmentSig
- addMult : EntailmentSig
- antiAddMult : EntailmentSig
Instances For
Equations
- Core.NaturalLogic.instBEqEntailmentSig.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Refinement ordering on entailment signatures.
The lattice has all at the bottom (most specific) and mono/anti
at the top of their respective halves.
Equations
- Core.NaturalLogic.EntailmentSig.all.refines x✝ = true
- Core.NaturalLogic.EntailmentSig.addMult.refines Core.NaturalLogic.EntailmentSig.addMult = true
- Core.NaturalLogic.EntailmentSig.addMult.refines Core.NaturalLogic.EntailmentSig.additive = true
- Core.NaturalLogic.EntailmentSig.addMult.refines Core.NaturalLogic.EntailmentSig.mult = true
- Core.NaturalLogic.EntailmentSig.addMult.refines Core.NaturalLogic.EntailmentSig.mono = true
- Core.NaturalLogic.EntailmentSig.antiAddMult.refines Core.NaturalLogic.EntailmentSig.antiAddMult = true
- Core.NaturalLogic.EntailmentSig.antiAddMult.refines Core.NaturalLogic.EntailmentSig.antiAdd = true
- Core.NaturalLogic.EntailmentSig.antiAddMult.refines Core.NaturalLogic.EntailmentSig.antiMult = true
- Core.NaturalLogic.EntailmentSig.antiAddMult.refines Core.NaturalLogic.EntailmentSig.anti = true
- Core.NaturalLogic.EntailmentSig.additive.refines Core.NaturalLogic.EntailmentSig.additive = true
- Core.NaturalLogic.EntailmentSig.additive.refines Core.NaturalLogic.EntailmentSig.mono = true
- Core.NaturalLogic.EntailmentSig.mult.refines Core.NaturalLogic.EntailmentSig.mult = true
- Core.NaturalLogic.EntailmentSig.mult.refines Core.NaturalLogic.EntailmentSig.mono = true
- Core.NaturalLogic.EntailmentSig.antiAdd.refines Core.NaturalLogic.EntailmentSig.antiAdd = true
- Core.NaturalLogic.EntailmentSig.antiAdd.refines Core.NaturalLogic.EntailmentSig.anti = true
- Core.NaturalLogic.EntailmentSig.antiMult.refines Core.NaturalLogic.EntailmentSig.antiMult = true
- Core.NaturalLogic.EntailmentSig.antiMult.refines Core.NaturalLogic.EntailmentSig.anti = true
- Core.NaturalLogic.EntailmentSig.mono.refines Core.NaturalLogic.EntailmentSig.mono = true
- Core.NaturalLogic.EntailmentSig.anti.refines Core.NaturalLogic.EntailmentSig.anti = true
- x✝¹.refines x✝ = false
Instances For
Equations
- Core.NaturalLogic.EntailmentSig.instLE = { le := fun (a b : Core.NaturalLogic.EntailmentSig) => a.refines b = true }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Core.NaturalLogic.EntailmentSig.instPartialOrder = { toPreorder := Core.NaturalLogic.EntailmentSig.instPreorder, le_antisymm := ⋯ }
Projection of a NL relation through a function of given signature (@cite{icard-2012}, Lemma 2.4).
If xRy and f has signature φ, then f(x) [R]^φ f(y). Returns the ≪-maximal relation guaranteed to hold between f(x) and f(y).
The table follows from the algebraic definitions:
- Additive: f(x∨y) = f(x)∨f(y), f(1)=1 → preserves ∨ → [∧]^⊕ = ∼ (cover from x∨y=1)
- Multiplicative: f(x∧y) = f(x)∧f(y), f(0)=0 → preserves ∧ → [|]^⊞ = | (disjoint from x∧y=0)
- Anti-additive: f(x∨y) = f(x)∧f(y), f(1)=0 → [∼]^◇ = | (from x∨y=1 ⟹ f(x)∧f(y)=0)
- Anti-multiplicative: f(x∧y) = f(x)∨f(y), f(0)=1 → [|]^⊟ = ∼ (from x∧y=0 ⟹ f(x)∨f(y)=1)
- Mono/anti alone: only preserves ⊑/⊒; ^, |, ∼ all weaken to #
Equations
- Core.NaturalLogic.EntailmentSig.project x✝ Core.NaturalLogic.EntailmentSig.all = x✝
- Core.NaturalLogic.EntailmentSig.project x✝ Core.NaturalLogic.EntailmentSig.addMult = x✝
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.negation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.antiAddMult = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.mono = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.anti = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.additive = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.antiAdd = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.alternation
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.mult = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.equiv Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.equiv
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.forward Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.reverse
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.reverse Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.forward
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.negation Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.alternation Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.cover
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.cover Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.independent
- Core.NaturalLogic.EntailmentSig.project Core.NaturalLogic.NLRelation.independent Core.NaturalLogic.EntailmentSig.antiMult = Core.NaturalLogic.NLRelation.independent
Instances For
Projection preserves equiv for all signatures.
Projection preserves independent for all signatures.
Composition of entailment signatures (@cite{icard-2012}, Lemma 2.7).
Derived from project: compose(ψ, φ) is the unique signature whose
projection table matches projecting through φ then ψ. This makes
projection_composition hold by finite verification rather than
requiring two independently maintained tables to agree.
The signature is identified by probing with forward and negation,
which suffice to distinguish all 9 signatures (with all handled
separately as the identity element).
Equations
- One or more equations did not get rendered due to their size.
- ψ.compose Core.NaturalLogic.EntailmentSig.all = ψ
- Core.NaturalLogic.EntailmentSig.all.compose φ = φ
Instances For
all is the identity for composition.
Composition is associative.
Equations
- One or more equations did not get rendered due to their size.
Strength of downward entailingness.
Names the three levels of the DE hierarchy:
.weak= DE only (licenses weak NPIs: ever, any).antiAdditive= DE + ∨→∧ distributive (licenses strong NPIs: lift a finger).antiMorphic= AA + ∧→∨ distributive (= negation)
- weak : DEStrength
- antiAdditive : DEStrength
- antiMorphic : DEStrength
Instances For
Equations
- Core.NaturalLogic.instBEqDEStrength.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Strength of upward entailingness (dual of DEStrength).
Names the three levels of the UE hierarchy:
.weak= plain UE (monotone).multiplicative= UE + ∧-distributive.additive= UE + ∨-distributive (strongest)
- weak : UEStrength
- multiplicative : UEStrength
- additive : UEStrength
Instances For
Equations
- Core.NaturalLogic.instBEqUEStrength.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Check if a context's DE strength is sufficient for an NPI.
strengthSufficient contextStrength requiredStrength returns true
when contextStrength ≥ requiredStrength in the Zwarts hierarchy.
Equations
- Core.NaturalLogic.strengthSufficient contextStrength Core.NaturalLogic.DEStrength.weak = true
- Core.NaturalLogic.strengthSufficient Core.NaturalLogic.DEStrength.weak Core.NaturalLogic.DEStrength.antiAdditive = false
- Core.NaturalLogic.strengthSufficient contextStrength Core.NaturalLogic.DEStrength.antiAdditive = true
- Core.NaturalLogic.strengthSufficient Core.NaturalLogic.DEStrength.antiMorphic Core.NaturalLogic.DEStrength.antiMorphic = true
- Core.NaturalLogic.strengthSufficient contextStrength Core.NaturalLogic.DEStrength.antiMorphic = false
Instances For
Map an entailment signature to DE strength, derived from project.
A signature is DE iff it reverses forward entailment: [⊑]^φ = ⊒.
Within the DE side, anti-additivity is detected by [∼]^φ = |
(the ∨→∧ swap: x∨y=1 ⟹ f(x)∧f(y)=0), and anti-morphism additionally
requires [|]^φ = ∼ (the ∧→∨ swap).
Returns none for UE-side signatures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Map an entailment signature to UE strength, derived from project.
A signature is UE iff it preserves forward entailment: [⊑]^φ = ⊑.
Additivity is detected by [∼]^φ = ∼ (∨-preservation: x∨y=1 ⟹ f(x)∨f(y)=1),
and multiplicativity by [|]^φ = | (∧-preservation: x∧y=0 ⟹ f(x)∧f(y)=0).
Returns none for DE-side signatures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Whether a context preserves or reverses entailment direction.
This is a coarsening of EntailmentSig: all UE-side signatures collapse to
.upward, all DE-side signatures collapse to .downward. Contexts that are
neither monotone nor antitone (e.g., "exactly n") are .nonMonotonic.
Used by:
- NeoGricean: determines which alternatives count as "stronger"
- RSA: polarity-sensitive inference
- Any theory computing scalar implicatures
- upward : ContextPolarity
- downward : ContextPolarity
- nonMonotonic : ContextPolarity
Instances For
Equations
- Core.NaturalLogic.instBEqContextPolarity.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compose context polarities.
This is the coarse composition table derived from the EntailmentSig monoid:
UE ∘ UE = UE, DE ∘ DE = UE (double negation), UE ∘ DE = DE, DE ∘ UE = DE.
Any composition involving nonMonotonic yields nonMonotonic.
Equations
- Core.NaturalLogic.ContextPolarity.upward.compose x✝ = x✝
- x✝.compose Core.NaturalLogic.ContextPolarity.upward = x✝
- Core.NaturalLogic.ContextPolarity.downward.compose Core.NaturalLogic.ContextPolarity.downward = Core.NaturalLogic.ContextPolarity.upward
- Core.NaturalLogic.ContextPolarity.nonMonotonic.compose x✝ = Core.NaturalLogic.ContextPolarity.nonMonotonic
- x✝.compose Core.NaturalLogic.ContextPolarity.nonMonotonic = Core.NaturalLogic.ContextPolarity.nonMonotonic
Instances For
Map an entailment signature to the coarser ContextPolarity type,
derived from project.
A signature is UE iff it preserves forward entailment ([⊑]^φ = ⊑),
DE iff it reverses it ([⊑]^φ = ⊒).
Equations
- One or more equations did not get rendered due to their size.
Instances For
toContextPolarity is a monoid homomorphism: composing signatures then
coarsening gives the same result as coarsening then composing polarities.
This theorem connects the fine-grained EntailmentSig monoid to the
coarse ContextPolarity composition, ensuring the two systems can never
disagree.
Compute the projectivity signature of a context from the signatures along the path from the target position to the root (@cite{icard-2012}, Definition 2.9).
Given a parse tree and a target position (e.g., "dangerous" in
"Every job that involves a giant squid is dangerous"), the path collects
the top signature of each node from the target up to the root.
The composed signature is List.prod, using the Monoid instance.
Example from Icard §3.2: path = [⊞, ⊕, ◇] (top(is) ∘ top(involves) ∘ top(every_restrictor)) contextProjectivity path = ◇ (anti-additive)
Equations
Instances For
Project a NL relation through a context given by its signature path.
Combines contextProjectivity with project.
Equations
Instances For
Projection composition (@cite{icard-2012}, Corollary 2.12).
Projecting through f then g is the same as projecting through g∘f. This is the compositionality principle: nested function application corresponds to signature composition.
Since compose is derived from project (via fromProjectionPair),
the only content of this theorem is that the two probe relations
(forward, negation) suffice to determine the full projection table.
Any DE-side signature licenses weak NPIs.
This connects Icard's signature lattice to @cite{ladusaw-1980}: a signature on the DE side (anti, antiAdd, antiMult, antiAddMult) creates a DE context, which is sufficient for weak NPI licensing.
Anti-additive or stronger signature licenses strong NPIs.
Strong NPIs (lift a finger, in weeks) require anti-additive contexts. In Icard's system, this corresponds to signatures antiAdd, antiAddMult — but NOT plain anti or antiMult.
Negation has the anti-morphism signature ◇⊟ (strongest DE signature).