Square of Opposition #
@cite{barwise-cooper-1981} @cite{horn-2001}
The Aristotelian Square of Opposition reified as a first-class algebraic object.
The square arranges four operators at its vertices:
contraries
A ──────────────── E
│ │
│ subalterns subalterns
│ │
I ──────────────── O
subcontraries
The six relations:
- Contraries (A–E): cannot both be true
- Subcontraries (I–O): cannot both be false
- Contradictories (A–O, E–I): exactly one is true
- Subalterns (A→I, E→O): the universal entails the particular
The square unifies quantifiers, modals, connectives, and attitudes:
- Quantifiers: A = every, E = no, I = some, O = not-every
- Modals: A = □, E = □¬, I = ◇, O = ¬□
- Attitudes: A = Bel(p), E = Bel(¬p), I = ◇p, O = ¬Bel(p)
The three duality operations (outer negation, inner negation, dual) generate the square from any single vertex. This module provides the abstract framework; concrete instantiations live in their respective theory modules.
The four vertices of a Square of Opposition.
- A : α
A-corner: universal affirmative (every, □, Bel(p))
- E : α
E-corner: universal negative (no, □¬, Bel(¬p))
- I : α
I-corner: particular affirmative (some, ◇, ◇p)
- O : α
O-corner: particular negative (not-every, ¬□, ¬Bel(p))
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Opposition.instReprSquare = { reprPrec := Core.Opposition.instReprSquare.repr }
The three operations that generate the square from a single vertex.
Given a vertex A, the other three are determined by:
E = innerNeg A(negate the scope / complement)O = outerNeg A(negate the result)I = dual A = outerNeg (innerNeg A)
- inner : α → α
Inner negation: A ↦ E, I ↦ O
- outer : α → α
Outer negation: A ↦ O, E ↦ I
- dual : α → α
Dual: A ↦ I, E ↦ O. Should equal outer ∘ inner.
Instances For
The six logical relations of the Square of Opposition.
Defined over W → Bool (decidable propositions over a domain W).
The relations are pointwise: they hold at every point w : W.
A entails I (subalternation).
E entails O (subalternation).
A and O are contradictories: A = ¬O.
E and I are contradictories: E = ¬I.
A and E are contraries: cannot both be true.
I and O are subcontraries: cannot both be false.
Instances For
Build a square from any operator and the GQ duality operations.
Equations
- Core.Opposition.Square.fromGQOps q = Core.Opposition.Square.fromOps q { inner := Core.Quantification.innerNeg, outer := Core.Quantification.outerNeg, dual := Core.Quantification.dualQ }
Instances For
The standard GQ duality operations.
Equations
- Core.Opposition.gqSquareOps α = { inner := Core.Quantification.innerNeg, outer := Core.Quantification.outerNeg, dual := Core.Quantification.dualQ }
Instances For
The six relations are not independent. Given the two contradiction diagonals (A = ¬O, E = ¬I), the other four relations follow:
- Contraries: A ∧ E → A ∧ ¬I → (by subalternation) A ∧ ¬A → ⊥
- Subcontraries: ¬I ∧ ¬O → E ∧ ¬O → (by subalternation) E ∧ ¬E → ⊥
- Subalternation: derived from contrariety + contradiction
So the contradiction diagonals are the primitive relations; the rest are consequences. This matches Horn's analysis: contradiction is fundamental.
Contraries cannot both be true.
Subcontraries cannot both be false.
From the contradiction diagonals, derive that A entails I.
The SquareRelations axioms above are deliberately weaker than the
Aristotelian-relation predicates from Aristotelian.lean: each field asserts
just one direction (e.g., subalternAI asserts A → I but not its strictness;
contraryAE asserts impossibility of joint truth but not impossibility of
joint falsity). This is intentional — it lets users provide minimal axioms
and have the rest derived via subaltern_from_contradictions etc.
The bridge lemmas below convert those weaker axioms into the full Aristotelian predicates, when the necessary side conditions (proper-subalternation witnesses, etc.) are provided.
A SquareRelations lifts to Subaltern sq.A sq.I when given a witness
w showing I does not entail A. The witness is needed because
Aristotelian.Subaltern is proper subalternation (strict).
A SquareRelations lifts to Contrary sq.A sq.E when given a witness
w where neither A nor E holds (the joint-non-exhaustion condition
that distinguishes Aristotelian Contrary from mere "cannot both be true").
From the outer/inner negation structure, the contradiction diagonals hold definitionally: A ↔ ¬(outerNeg A) and innerNeg A ↔ ¬(dual A).
Build a square of propositions from a box-like operator.
Given box : (W → Bool) → W → Bool (e.g., □ = "all accessible worlds satisfy"),
and a proposition p, produce the four corners:
- A = box p (□p: necessarily p)
- E = box (¬p) (□¬p: necessarily not-p)
- I = ¬(box (¬p)) (◇p: possibly p)
- O = ¬(box p) (¬□p: not necessarily p)
Equations
- Core.Opposition.Square.fromBox box p = { A := box p, E := box fun (w : W) => !p w, I := fun (w : W) => !box (fun (w' : W) => !p w') w, O := fun (w : W) => !box p w }
Instances For
The box-derived square always satisfies the contradiction diagonals.
Subalternation is the entailment relation that underlies Horn scales.
The I–A edge of the quantifier square (some → every) is precisely the
⟨some, all⟩ Horn scale from Core.Scale. More generally:
- The weak member of a Horn scale sits at I (particular/existential)
- The strong member sits at A (universal)
- Scalar implicature from I negates A: "some" implicates "not all" (= O)
This means the square of opposition IS the algebraic structure underlying scalar implicature: using the weak term (I) implicates the negation of the strong term (¬A = O). The "O-corner gap" — the non-lexicalization of O — is pragmatically explained: O is always recoverable as the implicature of I.
TODO: Open conjectures (previously stubbed in deleted
Core/Conjectures.lean):
- O-corner lexicalization gap: across natural languages, A/E/I are
lexicalized but O is always periphrastic (¬A):
lexicalized A ∧ lexicalized E ∧ lexicalized I ∧ ¬lexicalized O. Requires a cross-linguistic lexicalization registry. - Pragmatic explanation of the gap (@cite{horn-2001}, §4.5): the scalar implicature of the I-corner recovers the O-corner's content, making lexicalization of O communicatively redundant.
Subalternation A→I is equivalent to the Horn-scale ordering:
the A-corner entails the I-corner, which is the scale ⟨I, A⟩.