The Ginsberg–Fitting product bilattice #
The fundamental bilattice construction ([Avr96] Def 2.4): the product
L ⊙ R of two lattices carries pairs (a, b) recording evidence for
(a ∈ L) and against (b ∈ R) a proposition, ordered two ways:
- the truth order — more for, less against — is the carrier's
≤: as a type,L ⊙ R := L × Rᵒᵈ, so theProd/OrderDualinstances provide the truth lattice, its boundst = (⊤, ⊥)andf = (⊥, ⊤), and distributivity outright; - the knowledge order — more evidence both ways — is the plain
Prodorder, installed on the synonymKnow (L ⊙ R)(seeCore.Logic.Bilattice.Interlaced).
The Interlaced (L ⊙ R) instance packages the four monotonicity laws
([Avr96] Def 2.1(3)): the product is an interlaced bilattice — the
constructive half of the structure theory ([Avr96] Thm 2.5). The converse
representation theorem is Bilattice.decompose (ibid. Thm 4.3). On the
diagonal L ⊙ L, swapping the coordinates is Ginsberg's negation
([Gin88]; [Avr96] Thm 2.5(2)).
The construction "was essentially introduced by Ginsberg [Gin88], and
further generalized by Fitting" ([Avr96]). The algebraic-logic literature
sometimes calls the diagonal case with swap-negation a twist structure; that
term names an older single-factor lineage, so this file keeps Avron's name.
[UPSTREAM] candidate (mathlib has no bilattices).
Main definitions #
Bilattice.Product(L ⊙ R) — the carrier, with truth-order instances fromL × Rᵒᵈand knowledge-order instances onKnow (L ⊙ R)fromL × RProduct.mk/pro/con— plain-coordinate constructor and projections- the
Interlaced (L ⊙ R)instance — the four interlacing laws Product.neg— Ginsberg negation on the diagonalL ⊙ L
Componentwise product of order isomorphisms. [UPSTREAM] candidate:
mathlib has Equiv.prodCongr but no order-iso version.
Equations
- e₁.prodCongr e₂ = { toEquiv := e₁.prodCongr e₂.toEquiv, map_rel_iff' := ⋯ }
Instances For
The Ginsberg–Fitting product L ⊙ R ([Avr96] Def 2.4): pairs of
evidence for/against. The carrier order is the truth order (L × Rᵒᵈ: more
for, less against); the knowledge order lives on Know (L ⊙ R) (L × R:
more evidence both ways).
Equations
- Bilattice.Product L R = (L × Rᵒᵈ)
Instances For
The Ginsberg–Fitting product L ⊙ R ([Avr96] Def 2.4): pairs of
evidence for/against. The carrier order is the truth order (L × Rᵒᵈ: more
for, less against); the knowledge order lives on Know (L ⊙ R) (L × R:
more evidence both ways).
Equations
- Bilattice.«term_⊙_» = Lean.ParserDescr.trailingNode `Bilattice.«term_⊙_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊙ ") (Lean.ParserDescr.cat `term 71))
Instances For
Build L ⊙ R from plain coordinates: evidence a for, b against.
Equations
- Bilattice.Product.mk a b = (a, OrderDual.toDual b)
Instances For
The truth order #
The carrier instances, transported from L × Rᵒᵈ: ≤ is the truth order
([Avr96] Def 2.4(ii)), ⊓/⊔ the truth meet/join (ibid. Def 2.4(iv),
(iii)), ⊤ = t/⊥ = f the truth bounds (ibid. Def 2.4(vii)), and the product
of distributive lattices is distributive (ibid. Thm 2.5).
Equations
- Bilattice.Product.instPreorder = { le := Bilattice.Product.instPreorder._aux_1, lt := Bilattice.Product.instPreorder._aux_3, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯ }
Equations
- Bilattice.Product.instPartialOrder = { toPreorder := Bilattice.Product.instPreorder, le_antisymm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Bilattice.Product.instDistribLattice = { toLattice := Bilattice.Product.instLattice, le_sup_inf := ⋯ }
Equations
- Bilattice.Product.instBoundedOrder = { top := Bilattice.Product.instBoundedOrder._aux_1, le_top := ⋯, bot := Bilattice.Product.instBoundedOrder._aux_4, bot_le := ⋯ }
Equations
- Bilattice.Product.instFintype = { elems := Bilattice.Product.instFintype._aux_1, complete := ⋯ }
The knowledge order #
The instances on the synonym Know (L ⊙ R), transported from the plain
Prod order on L × R; ⊗/⊕/≤ₖ are then the generic knowledge
operations of Core.Logic.Bilattice.Interlaced.
Equations
- Bilattice.Product.instPreorderKnow = { le := Bilattice.Product.instPreorderKnow._aux_1, lt := Bilattice.Product.instPreorderKnow._aux_3, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯ }
Equations
- Bilattice.Product.instPartialOrderKnow = { toPreorder := Bilattice.Product.instPreorderKnow, le_antisymm := ⋯ }
Equations
- Bilattice.Product.instDistribLatticeKnow = { toLattice := Bilattice.Product.instLatticeKnow, le_sup_inf := ⋯ }
Equations
- Bilattice.Product.instBoundedOrderKnow = { top := Bilattice.Product.instBoundedOrderKnow._aux_1, le_top := ⋯, bot := Bilattice.Product.instBoundedOrderKnow._aux_4, bot_le := ⋯ }
The product is an interlaced bilattice ([Avr96] Thm 2.5): each order's meet and join are monotone for the other order.
Negation #
On the diagonal L ⊙ L, Ginsberg's negation swaps the coordinates: an
involution reversing the truth order and preserving the knowledge order
([Gin88]; [Avr96] Thm 2.5(2)).
Ginsberg negation on L ⊙ L: swap evidence for/against.
Equations
- x.neg = Bilattice.Product.mk x.con x.pro
Instances For
Ginsberg's swap is a negation on the diagonal ([Avr96] Thm 2.5(2)).
Equations
- Bilattice.Product.instNegation = { neg := Bilattice.Product.neg, neg_neg := ⋯, neg_le_neg := ⋯, neg_kLE_neg := ⋯ }
Recovering the factors #
The abstract decomposition applied to a product recovers its factors: the
knowledge ideals below the truth bounds are order-isomorphic to L and R
(iicKTopIso/iicKBotIso), so Bilattice.decompose closes the representation
loop, Know (L ⊙ R) ≃o L × R (decomposeProdIso) — the concrete half of
[Avr96] Thm 4.3's uniqueness clause.
The knowledge ideal below the truth top is the evidence-for factor,
L_{L ⊙ R} ≃o L.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The knowledge ideal below the truth bottom is the evidence-against factor,
R_{L ⊙ R} ≃o R.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The representation loop closed: Bilattice.decompose applied to a
product recovers the factors, Know (L ⊙ R) ≃o L × R — the concrete half of
[Avr96] Thm 4.3's uniqueness clause.