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.ContextPolarity: the coarse upward/downward quotient, a monoid homomorphism target (toContextPolarity_compose).
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
- NaturalLogic.instReprRelation = { reprPrec := NaturalLogic.instReprRelation.repr }
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.
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
- NaturalLogic.instReprSignature = { reprPrec := NaturalLogic.instReprSignature.repr }
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.
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.
Context polarity #
Whether a context preserves or reverses entailment — the coarse
UE/DE quotient of Signature (toContextPolarity).
- upward : ContextPolarity
The context preserves entailment (upward entailing).
- downward : ContextPolarity
The context reverses entailment (downward entailing).
- nonMonotonic : ContextPolarity
The context is neither monotone nor antitone (exactly n).
Instances For
Equations
- NaturalLogic.instDecidableEqContextPolarity x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
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 Signature monoid:
UE ∘ UE = UE, DE ∘ DE = UE (double negation), UE ∘ DE = DE, DE ∘ UE = DE.
Any composition involving nonMonotonic yields nonMonotonic.
Equations
- NaturalLogic.ContextPolarity.upward.compose x✝ = x✝
- x✝.compose NaturalLogic.ContextPolarity.upward = x✝
- NaturalLogic.ContextPolarity.downward.compose NaturalLogic.ContextPolarity.downward = NaturalLogic.ContextPolarity.upward
- NaturalLogic.ContextPolarity.nonMonotonic.compose x✝ = NaturalLogic.ContextPolarity.nonMonotonic
- x✝.compose NaturalLogic.ContextPolarity.nonMonotonic = 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 Signature monoid to the
coarse ContextPolarity composition, ensuring the two systems can never
disagree.
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).