Bitstring semantics for logical fragments (skeleton) #
Per @cite{demey-smessaert-2018} §3.2, Definition 7 and Theorems 1–2.
Given a fragment ℱ with partition Π_S(ℱ) = {α_1, ..., α_n}, the bitstring
semantics β_S^ℱ : 𝔹(ℱ) → BitVec n assigns each formula in the Boolean
closure of ℱ a bitstring whose i-th position is 1 iff the anchor
formula α_i entails it:
[β_S^ℱ(φ)]_i := 1 iff ⊨_S α_i → φ
Theorem 1: β_S^ℱ is a Boolean-algebra isomorphism.
Theorem 2: β_S^ℱ is therefore an Aristotelian isomorphism (Lemma 1).
The Aristotelian relations on bitstrings (Definition 2) are bitwise:
| Relation | Bitstring condition |
|---|---|
| Contradictory | b₁ ∧ b₂ = 0 and b₁ ∨ b₂ = 1 |
| Contrary | b₁ ∧ b₂ = 0 and b₁ ∨ b₂ ≠ 1 |
| Subcontrary | b₁ ∧ b₂ ≠ 0 and b₁ ∨ b₂ = 1 |
| Subaltern | b₁ ∧ b₂ = b₁ and b₁ ∨ b₂ ≠ b₁ |
What's here #
bitstringOf φ ψ— Definition 7 (the bit at indexisays whether anchorα_ientailsψ)BitContradictory/BitContrary/BitSubcontrary/BitSubaltern— Definition 2 (Aristotelian relations on bitstrings)bitstringOf_orderIso : closure (Set.range φ) ≃o (Fin n → Bool)— Theorem 1 (Boolean-algebra isomorphism), §11contradictory_iff_bitContradictoryand three siblings — Theorem 2 (Aristotelian relations transfer), §10
The bitstring of a Boolean predicate ψ relative to a fragment φ:
bit i is true iff anchor formula i entails ψ.
Equations
- Core.Opposition.bitstringOf φ ψ i = decide (∀ (w : W), Core.Opposition.anchor φ (Core.Opposition.anchorIndex✝ φ i) w = true → ψ w = true)
Instances For
Bitstring contradictoriness: b₁ ∧ b₂ = 0 and b₁ ∨ b₂ = 1.
Equations
- Core.Opposition.BitContradictory b₁ b₂ = (Core.Opposition.bitAnd b₁ b₂ = Core.Opposition.zeros n ∧ Core.Opposition.bitOr b₁ b₂ = Core.Opposition.ones n)
Instances For
Bitstring contrariety: b₁ ∧ b₂ = 0 and b₁ ∨ b₂ ≠ 1.
Equations
- Core.Opposition.BitContrary b₁ b₂ = (Core.Opposition.bitAnd b₁ b₂ = Core.Opposition.zeros n ∧ Core.Opposition.bitOr b₁ b₂ ≠ Core.Opposition.ones n)
Instances For
Bitstring subcontrariety: b₁ ∧ b₂ ≠ 0 and b₁ ∨ b₂ = 1.
Equations
- Core.Opposition.BitSubcontrary b₁ b₂ = (Core.Opposition.bitAnd b₁ b₂ ≠ Core.Opposition.zeros n ∧ Core.Opposition.bitOr b₁ b₂ = Core.Opposition.ones n)
Instances For
Bitstring subalternation: b₁ ⊆ b₂ (bitwise ≤) and not equal.
Equations
- Core.Opposition.BitSubaltern b₁ b₂ = (Core.Opposition.bitAnd b₁ b₂ = b₁ ∧ Core.Opposition.bitOr b₁ b₂ ≠ b₁)
Instances For
Forward direction of Theorem 2 (bitAnd half): Boolean contradictoriness
of two arbitrary W → Bool predicates implies their bitstrings have empty
bitwise-AND. This direction goes through without Boolean-closure
infrastructure — only the partition's anchor-consistency matters.
The reverse direction (BitContradictory → Contradictory) and the
bitOr-direction (Contradictory → bitOr = ones) require the Boolean-closure
precondition (Demey-Smessaert §3, Lemma 6: every φ ∈ 𝔹(ℱ) is
anchor-decided), which would in turn need Theorem 1's Boolean-algebra
structure on 𝔹(ℱ).
Lemma 6 specialized to our indexed-family anchor: every ψ in the Boolean
closure of Set.range φ is anchor-decided. Direct induction on closure.
Note: Atoms.lean::anchorBA_le_or_le_compl_mem_closure proves the same
statement for the BA-generic anchorBA s σ form (s : Finset α, σ : s → Bool).
The two are not directly bridged: the bridge would require Finset.image φ
to collapse duplicate generators and a corresponding choice of polarity per
duplicate-class — adding case analysis that exceeds the cost of just
reproving the specialized form here. The structural proof (induction on
closure_bot_sup_induction) is the same in both files; if either changes,
so does the other.
The bridge lemma: for any ψ in the Boolean closure and any world w
that satisfies the anchor at index i, the bit bitstringOf φ ψ i equals
ψ w. This is the well-definedness of the bitstring representation:
Lemma 6 (anchor-decidedness) plus consistency means every anchor-witness
world agrees on ψ's truth value, so the bit is unambiguous.
All four Aristotelian-relation theorems below are corollaries of this lemma + partition exhaustion.
For each world, the index of an anchor it satisfies (chosen via Classical
on anchor_jointly_exhaustive). Composes with bitstringOf_eq_apply_at_anchor
to give bitstringOf φ ψ (worldAnchorIndex φ w) = ψ w.
Equations
- Core.Opposition.worldAnchorIndex φ w = (Core.Opposition.partition ι W φ).equivFin ⟨Classical.choose ⋯, ⋯⟩
Instances For
The anchor at worldAnchorIndex φ w is satisfied by w.
The world-side bridge: at any world, bitstringOf φ ψ evaluated at
that world's anchor index returns ψ at that world. Direct corollary of
bitstringOf_eq_apply_at_anchor + anchor_worldAnchorIndex.
Theorem 1's injectivity half: bitstringOf φ is injective on the
Boolean closure. Two formulas in the closure with the same bitstring
representation agree at every world.
One-line proof: at each w, ψ_j w = bitstringOf φ ψ_j (worldAnchorIndex φ w)
for both j ∈ {1, 2}, and the bitstrings are equal by hypothesis.
Anchor formulas live in the Boolean closure. This is the key Layer-3
bridge: our decide (∀ i : ι, ...) form of anchor (from Partition.lean)
matches the Finset-indexed anchor over Finset.univ, which lives in the
closure by induction.
The inverse of bitstringOf on the Boolean closure: takes a bitstring b
to the Boolean-algebra supremum of those anchor formulas whose bit is true.
The result lies in the closure (sup of closure elements via iSup_mem).
Equations
- Core.Opposition.bitstringInverse φ b = ⨆ (i : Fin (Core.Opposition.partition ι W φ).card), if b i = true then Core.Opposition.anchor φ (Core.Opposition.anchorIndex✝ φ i) else ⊥
Instances For
The bitstringInverse-evaluation lemma: at a world w satisfying the
anchor at index j, the inverse bitstring evaluates to the j-th bit.
Heart of both round trips: shows that the iSup collapses to a single
summand (the one at j) by uniqueness of the satisfied anchor.
Round trip 1: bitstringOf ∘ bitstringInverse = id on Fin n → Bool.
Use bitstringOf_eq_apply_at_anchor (lifting through any anchor witness)
bitstringInverse_apply_at_anchor(evaluating the inverse).
Round trip 2: bitstringInverse ∘ bitstringOf = id on closure elements.
Symmetric to round trip 1, using bitstringOf_apply_at_world for evaluation
of bitstringOf ψ at the worldAnchorIndex.
Theorem 1 (Demey & Smessaert 2018) — the full Boolean-algebra isomorphism.
bitstringOf φ restricted to the Boolean closure of Set.range φ is an
order isomorphism onto Fin n → Bool where n = |partition|. As an
OrderIso between Boolean algebras, it is automatically a Boolean-algebra
isomorphism (BA structure is determined by the order).
Construction: toFun := bitstringOf φ, invFun := bitstringInverse φ,
round trips established above; monotonicity from
bitAnd_eq_left_iff_forall_imp (entailment ↔ bitwise inclusion).
Equations
- One or more equations did not get rendered due to their size.
Instances For
All four Aristotelian-relation theorems below reduce to combinations of
three iff lemmas. Each Bit* predicate decomposes into bit-level conditions,
and each bit-level condition matches a pointwise predicate via the bridge
bitstringOf_eq_apply_at_anchor (forward) and bitstringOf_apply_at_world
(reverse).
Theorem 2 — Contradictory (Demey & Smessaert 2018).
Theorem 2 — Contrary (shares bitAnd half with Contradictory).
Theorem 2 — Subcontrary (dual of Contrary).
Theorem 2 — Subaltern (pointwise inclusion ↔ bitwise).