The natural-logic relation algebra #
This file defines the seven natural-logic relations between denotations (≡, ⊑, ⊒, ^, |, ⌣, #) and the nine entailment signatures of [Ica12], with the operations of the projectivity calculus: chaining two relations, projecting a relation through a function of known signature, and composing signatures.
A relation is read non-strictly, as the conjunction of its constraint
atoms: distinct relations overlap, and R ≤ R' iff R entails R',
by reverse inclusion of constraint sets. The mutually exclusive seven
of [MCM09] are the strict refinements. Signatures
are ordered likewise by reverse inclusion of property sets; # and
• are the tops, and there is no bottom.
Main declarations #
Relation: the seven relations, a monoid underRelation.joinwith identityequivand absorbing elementindependent.Relation.constraints: a relation as a conjunction of atomic lattice constraints; the source of the implication order.Signature: the nine signatures, a monoid underSignature.composewith identityaddMultand absorbing elementall.Signature.project: projection of a relation through a signature — an action of the signature monoid on the relations (MulAction Signature Relation).Signature.contextProjectivity: the signature of a position, as the monoid product along its path.Signature.sign: the coarse upward/downward quotient, aSignType, and a monoid homomorphism (Signature.signHom); negation's signature has the sign of the negativePolarity(Signature.sign_antiAddMult).
Implementation notes #
compose is derived from project by probing at the relations
forward and negation, so projection_composition holds by
construction. Associativity of join is printed in neither source and
is verified by decide. The tables are certified semantically in
Logic/Natural/Soundness.lean (Relation.Holds.join, the
soundFor_* rows) and shown tight in
Logic/Natural/Completeness.lean, which also derives the seven
relations as the nondegenerately realizable constraint conjunctions.
References #
The seven relations #
The seven natural-logic relations between denotations.
- equiv : Relation
Equivalence
≡holds when the denotations coincide (couch / sofa). - forward : Relation
Forward entailment
⊑holds whenA ⊆ B(dog / animal). - reverse : Relation
Reverse entailment
⊒holds whenA ⊇ B(animal / dog). - negation : Relation
Negation
^holds when the denotations are disjoint and exhaustive (happy / unhappy). - alternation : Relation
Alternation
|holds when the denotations are disjoint (cat / dog). - cover : Relation
Cover
⌣holds when the denotations are exhaustive (animal / nondog). - independent : Relation
Independence
#imposes no constraint (hungry / tall).
Instances For
Equations
- NaturalLogic.instDecidableEqRelation x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- NaturalLogic.instFintypeRelation = { elems := { val := ↑NaturalLogic.Relation.enumList, nodup := NaturalLogic.Relation.enumList_nodup }, complete := NaturalLogic.instFintypeRelation._proof_1 }
Equations
- NaturalLogic.instReprRelation = { reprPrec := NaturalLogic.instReprRelation.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- NaturalLogic.Relation.instDecidableEqAtom x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- NaturalLogic.Relation.instReprAtom = { reprPrec := NaturalLogic.Relation.instReprAtom.repr }
The constraint set of a relation: each relation is the conjunction
of its atoms (≡ = {le, ge}, ^ = {disjoint, codisjoint}, # =
∅), ≤ is reverse inclusion of constraint sets, and Holds is their
conjunction (Relation.holds_iff in Logic/Natural/Soundness.lean).
Exactly the seven images are nondegenerately realizable among the
sixteen subsets (Relation.mem_range_constraints_iff in
Logic/Natural/Completeness.lean).
Equations
- NaturalLogic.Relation.equiv.constraints = {NaturalLogic.Relation.Atom.le, NaturalLogic.Relation.Atom.ge}
- NaturalLogic.Relation.forward.constraints = {NaturalLogic.Relation.Atom.le}
- NaturalLogic.Relation.reverse.constraints = {NaturalLogic.Relation.Atom.ge}
- NaturalLogic.Relation.negation.constraints = {NaturalLogic.Relation.Atom.disjoint, NaturalLogic.Relation.Atom.codisjoint}
- NaturalLogic.Relation.alternation.constraints = {NaturalLogic.Relation.Atom.disjoint}
- NaturalLogic.Relation.cover.constraints = {NaturalLogic.Relation.Atom.codisjoint}
- NaturalLogic.Relation.independent.constraints = ∅
Instances For
The implication order ([Ica12]'s ≪): R ≤ R' iff xRy entails
xR'y — reverse inclusion of constraint sets, certified semantically by
Relation.Holds.of_le. # is the top; there is no bottom: the two
diamonds (≡ over ⊑/⊒, ^ over |/⌣) meet only at #, since
x = y makes x,y neither disjoint nor exhaustive.
Equations
- NaturalLogic.Relation.instPartialOrder = PartialOrder.lift (fun (R : NaturalLogic.Relation) => OrderDual.toDual R.constraints) NaturalLogic.Relation.instPartialOrder._proof_1
Equations
- x✝¹.instDecidableLE x✝ = decidable_of_iff (x✝.constraints ⊆ x✝¹.constraints) ⋯
Equations
Join operation ⋈ ([Ica12], Lemma 1.5): given xRy and yR'z, the
strongest relation guaranteed between x and z — relation-algebra
join, not lattice join. The table is derived from the non-strict
Holds reading, certified sound cell-by-cell by Relation.Holds.join
in Logic/Natural/Soundness.lean, and tight by Relation.isLeast_join
in Logic/Natural/Completeness.lean: each cell is the least relation
sound for the chaining ([Ica12]'s Definition 1.4;
[MCM09]'s §3 join is instead exact relation
composition, valued in union relations outside the seven on 17 of
the 49 cells — this table is its best single-relation weakening).
Equations
- NaturalLogic.Relation.equiv.join x✝ = x✝
- x✝.join NaturalLogic.Relation.equiv = x✝
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.forward = NaturalLogic.Relation.forward
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.reverse = NaturalLogic.Relation.independent
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.negation = NaturalLogic.Relation.alternation
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.alternation = NaturalLogic.Relation.alternation
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.cover = NaturalLogic.Relation.independent
- NaturalLogic.Relation.forward.join NaturalLogic.Relation.independent = NaturalLogic.Relation.independent
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.forward = NaturalLogic.Relation.independent
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.reverse = NaturalLogic.Relation.reverse
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.negation = NaturalLogic.Relation.cover
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.alternation = NaturalLogic.Relation.independent
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.cover = NaturalLogic.Relation.cover
- NaturalLogic.Relation.reverse.join NaturalLogic.Relation.independent = NaturalLogic.Relation.independent
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.forward = NaturalLogic.Relation.cover
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.reverse = NaturalLogic.Relation.alternation
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.negation = NaturalLogic.Relation.equiv
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.alternation = NaturalLogic.Relation.reverse
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.cover = NaturalLogic.Relation.forward
- NaturalLogic.Relation.negation.join NaturalLogic.Relation.independent = NaturalLogic.Relation.independent
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.forward = NaturalLogic.Relation.independent
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.reverse = NaturalLogic.Relation.alternation
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.negation = NaturalLogic.Relation.forward
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.alternation = NaturalLogic.Relation.independent
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.cover = NaturalLogic.Relation.forward
- NaturalLogic.Relation.alternation.join NaturalLogic.Relation.independent = NaturalLogic.Relation.independent
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.forward = NaturalLogic.Relation.cover
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.reverse = NaturalLogic.Relation.independent
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.negation = NaturalLogic.Relation.reverse
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.alternation = NaturalLogic.Relation.reverse
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.cover = NaturalLogic.Relation.independent
- NaturalLogic.Relation.cover.join NaturalLogic.Relation.independent = NaturalLogic.Relation.independent
- NaturalLogic.Relation.independent.join x✝ = NaturalLogic.Relation.independent
Instances For
Equations
- NaturalLogic.Relation.instMul = { mul := NaturalLogic.Relation.join }
Equations
- NaturalLogic.Relation.instOne = { one := NaturalLogic.Relation.equiv }
The relations form a monoid under ⋈ with identity ≡. The identity
and absorption laws are printed in [Ica12] (p. 710); associativity
appears in neither [Ica12] nor [MCM09] and is
verified here by kernel decide. Not commutative: ^ ⋈ ⌣ = ⊑ but
⌣ ⋈ ^ = ⊒ (chaining is directional).
Equations
- One or more equations did not get rendered due to their size.
# absorbs on the left ([Ica12] p. 710).
# absorbs on the right ([Ica12] p. 710).
Entailment signatures #
The function classes a relation can be projected through, from
arbitrary (•) to anti-morphism (◇⊟).
- all : Signature
An arbitrary function (
•), projecting every relation to#. - mono : Signature
A monotone function (
+, upward entailing). - anti : Signature
An antitone function (
−, downward entailing). - additive : Signature
An additive function (
⊕), preserving joins. - antiAdd : Signature
An anti-additive function (
◇), turning joins into meets. - mult : Signature
A multiplicative function (
⊞), preserving meets. - antiMult : Signature
An anti-multiplicative function (
⊟), turning meets into joins. - addMult : Signature
A morphism (
⊕⊞), additive and multiplicative. - antiAddMult : Signature
An anti-morphism (
◇⊟), anti-additive and anti-multiplicative.
Instances For
Equations
- NaturalLogic.instDecidableEqSignature x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- NaturalLogic.instReprSignature = { reprPrec := NaturalLogic.instReprSignature.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The function properties a signature can assert, closed under
implication (an additive function is monotone, so ⊕'s set contains
monotone).
- monotone : Property
Preserves
≤. - antitone : Property
Reverses
≤. - additive : Property
Preserves
⊔. - multiplicative : Property
Preserves
⊓. - antiAdditive : Property
Sends
⊔to⊓. - antiMultiplicative : Property
Sends
⊓to⊔.
Instances For
Equations
- NaturalLogic.Signature.instDecidableEqProperty x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
The property set of a signature: ≤ is reverse inclusion, so
addMult/antiAddMult are the most specific elements of their halves
and all (•, no property) is the top.
Equations
- NaturalLogic.Signature.all.properties = ∅
- NaturalLogic.Signature.mono.properties = {NaturalLogic.Signature.Property.monotone}
- NaturalLogic.Signature.anti.properties = {NaturalLogic.Signature.Property.antitone}
- NaturalLogic.Signature.additive.properties = {NaturalLogic.Signature.Property.monotone, NaturalLogic.Signature.Property.additive}
- NaturalLogic.Signature.mult.properties = {NaturalLogic.Signature.Property.monotone, NaturalLogic.Signature.Property.multiplicative}
- NaturalLogic.Signature.antiAdd.properties = {NaturalLogic.Signature.Property.antitone, NaturalLogic.Signature.Property.antiAdditive}
- NaturalLogic.Signature.antiMult.properties = {NaturalLogic.Signature.Property.antitone, NaturalLogic.Signature.Property.antiMultiplicative}
- NaturalLogic.Signature.addMult.properties = {NaturalLogic.Signature.Property.monotone, NaturalLogic.Signature.Property.additive, NaturalLogic.Signature.Property.multiplicative}
- NaturalLogic.Signature.antiAddMult.properties = {NaturalLogic.Signature.Property.antitone, NaturalLogic.Signature.Property.antiAdditive, NaturalLogic.Signature.Property.antiMultiplicative}
Instances For
The refinement order ([Ica12]'s ≼, §2.2): σ ≤ τ iff every
σ-function is a τ-function — reverse inclusion of property sets,
certified semantically by Signature.SoundFor.of_le in
Logic/Natural/Soundness.lean.
Equations
- NaturalLogic.Signature.instPartialOrder = PartialOrder.lift (fun (σ : NaturalLogic.Signature) => OrderDual.toDual σ.properties) NaturalLogic.Signature.instPartialOrder._proof_1
Equations
- x✝¹.instDecidableLE x✝ = decidable_of_iff (x✝.properties ⊆ x✝¹.properties) ⋯
Equations
The projection of a relation through a function of the given
signature ([Ica12] Definition 2.3, computed by his Lemma 2.4):
the strongest relation guaranteed between f x and f y when x R y
and f has signature σ. The rows are certified sound against the
function classes in Logic/Natural/Soundness.lean (soundFor_*) and
tight by Signature.isLeast_project in
Logic/Natural/Completeness.lean. One cell deviates from the printed
table: [Ica12] prints [R]^• = # for all R (p. 715), but every
function preserves equality, so his Definition 2.3 forces
[≡]^• = ≡.
Equations
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.all = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project x✝ NaturalLogic.Signature.all = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project x✝ NaturalLogic.Signature.addMult = x✝
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.negation
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.cover
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.alternation
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.antiAddMult = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.mono = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.mono = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.mono = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.mono = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.mono = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.mono = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.mono = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.anti = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.anti = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.anti = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.anti = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.anti = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.anti = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.anti = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.additive = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.additive = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.additive = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.additive = NaturalLogic.Relation.cover
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.additive = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.additive = NaturalLogic.Relation.cover
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.additive = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.alternation
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.alternation
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.antiAdd = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.mult = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.mult = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.mult = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.mult = NaturalLogic.Relation.alternation
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.mult = NaturalLogic.Relation.alternation
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.mult = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.mult = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.equiv NaturalLogic.Signature.antiMult = NaturalLogic.Relation.equiv
- NaturalLogic.Signature.project NaturalLogic.Relation.forward NaturalLogic.Signature.antiMult = NaturalLogic.Relation.reverse
- NaturalLogic.Signature.project NaturalLogic.Relation.reverse NaturalLogic.Signature.antiMult = NaturalLogic.Relation.forward
- NaturalLogic.Signature.project NaturalLogic.Relation.negation NaturalLogic.Signature.antiMult = NaturalLogic.Relation.cover
- NaturalLogic.Signature.project NaturalLogic.Relation.alternation NaturalLogic.Signature.antiMult = NaturalLogic.Relation.cover
- NaturalLogic.Signature.project NaturalLogic.Relation.cover NaturalLogic.Signature.antiMult = NaturalLogic.Relation.independent
- NaturalLogic.Signature.project NaturalLogic.Relation.independent NaturalLogic.Signature.antiMult = NaturalLogic.Relation.independent
Instances For
Every signature except • preserves equiv (• is the class of arbitrary functions, which need not respect equivalence).
Projection preserves independent for all signatures.
Recover an entailment signature from its projection of forward and
negation. These two probes uniquely identify each signature (up to
•'s probe pair being (#, #)).
Equations
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.independent NaturalLogic.Relation.independent = NaturalLogic.Signature.all
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.forward NaturalLogic.Relation.independent = NaturalLogic.Signature.mono
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.forward NaturalLogic.Relation.cover = NaturalLogic.Signature.additive
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.forward NaturalLogic.Relation.alternation = NaturalLogic.Signature.mult
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.forward NaturalLogic.Relation.negation = NaturalLogic.Signature.addMult
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.reverse NaturalLogic.Relation.independent = NaturalLogic.Signature.anti
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.reverse NaturalLogic.Relation.alternation = NaturalLogic.Signature.antiAdd
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.reverse NaturalLogic.Relation.cover = NaturalLogic.Signature.antiMult
- NaturalLogic.Signature.fromProjectionPair NaturalLogic.Relation.reverse NaturalLogic.Relation.negation = NaturalLogic.Signature.antiAddMult
- NaturalLogic.Signature.fromProjectionPair x✝¹ x✝ = NaturalLogic.Signature.mono
Instances For
Composition of entailment signatures ([Ica12], 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 (• included: its probe
pair is (#, #), which makes it absorbing, [Ica12] p. 716).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
The sign of a signature #
The sign of a signature, [Ica12]'s coarse upward/downward quotient: 1 for an
upward-entailing context, which preserves forward entailment ([⊑]^φ = ⊑), -1 for a
downward-entailing one, which reverses it ([⊑]^φ = ⊒), and 0 when neither is guaranteed, for
a non-monotone context such as exactly n or an arbitrary one.
Equations
- One or more equations did not get rendered due to their size.
Instances For
sign as a monoid homomorphism, so that the signature monoid and its coarse quotient can
never disagree.
Equations
- NaturalLogic.Signature.signHom = { toFun := NaturalLogic.Signature.sign, map_one' := NaturalLogic.Signature.signHom._proof_1, map_mul' := NaturalLogic.Signature.sign_mul }
Instances For
The anti-morphism signature of sentential negation has the sign of the negative polarity.
The projectivity signature of a position, as the monoid product of
the signatures along its path, listed root-first (outermost context
first): [Ica12]'s marking recursion pro(s(u)) = top(s) ∘ pro(u)
(Definition 2.9). Under the projection action, mul_smul applies the
innermost — last — signature to the relation first. For example,
contextProjectivity [.antiAdd, .addMult] = .antiAdd: an intersective
modifier inside a no-restrictor leaves the position anti-additive.
Equations
- NaturalLogic.Signature.contextProjectivity path = path.prod
Instances For
Projection composition #
Projecting through φ and then ψ projects through the composite
signature ([Ica12] Definition 2.6 and Lemma 2.7) — the mul_smul
law of MulAction Signature Relation. Since compose is derived from
project by probing at forward and negation, the content is that
the two probes determine the whole table.
Equations
- NaturalLogic.instSMulSignatureRelation = { smul := fun (σ : NaturalLogic.Signature) (R : NaturalLogic.Relation) => NaturalLogic.Signature.project R σ }
Projection is an action of the signature monoid on the relations:
projection_composition is the mul_smul law.
Equations
- One or more equations did not get rendered due to their size.
The negation signature #
Negation has the anti-morphism signature ◇⊟ (strongest DE signature).