The Ginsberg–Fitting bilattice product (twist structure) #
A bilattice carries two lattice orders on one carrier — a truth order ≤_t
and a knowledge/information order ≤_k — with the four operations monotone
w.r.t. both (an interlaced bilattice, [Avr96] Def 2.1). The fundamental
construction is the twist product (Ginsberg–Fitting product) L ⊙ R of two
bounded lattices ([Avr96] Def 2.4): the carrier is L × R, where a value
(a, b) records evidence for (a ∈ L) and against (b ∈ R).
- the knowledge order
≤_kis the product order onL × R(more evidence both ways) — i.e. mathlib'sProdlattice, with⊗ = ⊓,⊕ = ⊔; - the truth order
≤_tdualizes the second factor (more for, less against); its operations∧/∨aretInf/tSup.
Following the project's plain-Prop convention (and avoiding the Prod-instance
clash of putting two Lattices on one type), the knowledge structure is
mathlib's Prod lattice (≤, ⊓, ⊔), while the truth structure is the named
relations/operations tLE, tInf, tSup.
This file proves the constructive half of the structure theory ([Avr96] Thm 2.5): the twist product is an interlaced bilattice — the truth relations form a lattice, and all four operations are interlaced.
Evidential S (Core.Logic.Bilattice) is the diagonal case S ⊙ S; FOUR = Bool ⊙ Bool, PRESUP = Fin 3 ⊙ Fin 3.
Main results #
Bilattice.TwistProduct.tLE/tInf/tSup— the truth order, meet∧, join∨tInf_isGLB-style lemmas (tInf_tLE_left,le_tInf, …) — the truth latticetInf_kmono/tSup_kmono/kInf_tmono/kSup_tmono— the four interlacing laws (truth ops are≤_k-monotone; knowledge ops⊓/⊔are≤_t-monotone)neg,neg_neg,neg_tLE,neg_kLE— Ginsberg negation on the diagonalL ⊙ L
TODO #
The representation theorem ([Avr96] Thm 4.3), the converse of Thm 2.5:
every interlaced bilattice B is isomorphic to L_B ⊙ R_B for bounded lattices
L_B = {x | ⊥ ≤_t x}, R_B = {x | x ≤_t ⊥}, via g x = (x ∨ ⊥, x ∧ ⊥) with
inverse (a, b) ↦ a ⊕ b; L_B, R_B are unique up to isomorphism, and with a
negation L_B ≅ R_B. This needs an abstract InterlacedBilattice class and the
interlacing-algebra chain (Avron Prop 3.2 → Cor 3.8 → Thm 4.3); it is the theorem
that earns the abstract class.
Truth order ≤_t on L × R: more evidence-for, less evidence-against
([Avr96] Def 2.4(ii)). The knowledge order ≤_k is the Prod order ≤.
Equations
- Bilattice.TwistProduct.tLE x y = (x.fst ≤ y.fst ∧ y.snd ≤ x.snd)
Instances For
Truth meet ∧: meet the evidence-for, join the evidence-against
([Avr96] Def 2.4(iv)). The knowledge meet ⊗ is the Prod meet ⊓.
Equations
- Bilattice.TwistProduct.tInf x y = (x.fst ⊓ y.fst, x.snd ⊔ y.snd)
Instances For
Truth join ∨: join the evidence-for, meet the evidence-against
([Avr96] Def 2.4(iii)). The knowledge join ⊕ is the Prod join ⊔.
Equations
- Bilattice.TwistProduct.tSup x y = (x.fst ⊔ y.fst, x.snd ⊓ y.snd)
Instances For
The truth order is a lattice #
Interlacing #
The four operations are monotone w.r.t. both orders ([Avr96] Def 2.1(3)).
The knowledge structure is mathlib's Prod lattice (≤, ⊓, ⊔); the truth
operations are tInf/tSup.
Bounds #
With bounded factors the twist product has four extremes ([Avr96]
Def 2.4(vii)): truth bounds t = (⊤, ⊥), f = (⊥, ⊤), and knowledge bounds
⊤ = (⊤, ⊤), ⊥ = (⊥, ⊥) (the latter are the Prod BoundedOrder).
Truth top t = (⊤, ⊥) (maximal for, minimal against).
Equations
Instances For
Truth bottom f = (⊥, ⊤).
Equations
Instances For
Negation #
On the diagonal L ⊙ L, Ginsberg's negation swaps the coordinates: it reverses
≤_t, preserves ≤_k, and is an involution ([Avr96] Thm 2.5(2)).
Ginsberg negation on L ⊙ L: swap evidence for/against.
Equations
- Bilattice.TwistProduct.neg x = (x.snd, x.fst)