Interlaced bilattices (abstract) #
An interlaced bilattice ([Avr96] Def 2.1) is one carrier with two bounded
lattice orders — a truth order ≤_t and a knowledge order ≤_k — such
that all four lattice operations are monotone with respect to both orders. The
interlacing condition is due to [Fit90]; [Avr96], cited throughout
for statement locations, develops its structure theory.
To carry two lattice structures on one carrier without an instance clash, we use
the OrderDual-style trick: the truth lattice is the carrier's own
[Lattice B] [BoundedOrder B], while the knowledge lattice lives on a type
synonym Know B (a distinct type head, so [Lattice (Know B)] is a separate
instance). The truth meet/join are ⊓/⊔; the knowledge meet/join (consensus
⊗, gullibility ⊕) are written through the synonym.
This file sets up the synonym, the interlacing mixin, and proves the
representation theorem ([Avr96] Thm 4.3) for any interlaced bilattice:
the knowledge lattice decomposes as the Ginsberg–Fitting product of the
knowledge-order principal ideals of the truth bounds (decompose), and the
truth order is recovered from the decomposition (le_iff_kInf_top_kInf_bot).
Unlike Core.Logic.Bilattice.Representation (which handles the distributive
special case via whole-lattice distributivity), the key identities (Cor 3.5,
Cor 3.8) are derived from interlacing alone, by truth-antisymmetry and a fiber
lemma rather than Avron's interval argument. The constructive converse — the
product of two lattices is interlaced — is Core.Logic.Bilattice.Product.
[UPSTREAM] candidate (mathlib has no bilattices).
Main definitions / results #
Bilattice.Know— the knowledge-order synonym;toKnow/ofKnowthe castsBilattice.kInf/kSup— knowledge meet⊗/ join⊕(scoped⊗/⊕)Bilattice.kLE— knowledge order≤_k(scoped≤ₖ)Bilattice.Interlaced— the four interlacing laws (mixin, [Avr96] Def 2.1)Bilattice.inf_kT_sup_inf_kF— Cor 3.8:X = (X ⊗ t) ⊕ (X ⊗ f)Bilattice.isCompl_truthBounds— Cor 3.5:t,fare knowledge-complementaryBilattice.decompose— Thm 4.3:Know B ≃o Iic t × Iic fBilattice.le_iff_kInf_top_kInf_bot— Thm 4.3, truth side:x ≤ yiff thet-components grow and thef-components shrink in the knowledge orderBilattice.Negation— negation mixin ([Avr96] Def 2.3), with the derived bounds/De Morgan/knowledge-homomorphism equationsBilattice.negIicIso,neg_kInf_top— Prop 4.7: with a negation the two ideals are isomorphic (λ x, ∼x : L_B ≃o R_B) and the decomposition is a diagonal productBilattice.Conflation— the knowledge-order inversion ([Fit21] §8.4), withIsConsistent/IsAnticonsistent/IsExact([Fit21] Def 8.5.1) and their closure, interpolation, and antichain laws (ibid. Props 8.5.2–8.5.4)
TODO #
Package [Avr96] Prop 4.7's full equivalence ⟨B, ∼⟩ ≅ L_B ⊙ L_B (its two
proof steps are negIicIso and neg_kInf_top); abstract uniqueness of the
factors up to isomorphism (ibid. Thm 4.3; the concrete half for products is
Bilattice.Product.decomposeProdIso).
The knowledge-order synonym of a bilattice carrier (cf. OrderDual). It is
the same underlying type as B, but a distinct type head, so it can carry the
knowledge lattice as a separate instance from B's truth lattice.
Equations
- Bilattice.Know B = B
Instances For
Knowledge meet ⊗ (consensus): the meet in the knowledge lattice.
Equations
- Bilattice.kInf x y = Bilattice.ofKnow (Bilattice.toKnow x ⊓ Bilattice.toKnow y)
Instances For
Knowledge join ⊕ (gullibility): the join in the knowledge lattice.
Equations
- Bilattice.kSup x y = Bilattice.ofKnow (Bilattice.toKnow x ⊔ Bilattice.toKnow y)
Instances For
Knowledge meet ⊗ (consensus): the meet in the knowledge lattice.
Equations
- Bilattice.«term_⊗_» = Lean.ParserDescr.trailingNode `Bilattice.«term_⊗_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ ") (Lean.ParserDescr.cat `term 71))
Instances For
Knowledge join ⊕ (gullibility): the join in the knowledge lattice.
Equations
- Bilattice.«term_⊕_» = Lean.ParserDescr.trailingNode `Bilattice.«term_⊕_» 65 65 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊕ ") (Lean.ParserDescr.cat `term 66))
Instances For
Knowledge meet is idempotent.
Knowledge join is idempotent.
Knowledge order ≤_k.
Equations
- Bilattice.kLE x y = (Bilattice.toKnow x ≤ Bilattice.toKnow y)
Instances For
Knowledge order ≤_k.
Equations
- Bilattice.«term_≤ₖ_» = Lean.ParserDescr.trailingNode `Bilattice.«term_≤ₖ_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≤ₖ ") (Lean.ParserDescr.cat `term 51))
Instances For
Equations
- Bilattice.instTransKLE = { trans := ⋯ }
The interlacing mixin #
The four interlacing laws ([Avr96] Def 2.1(3)): each operation is monotone w.r.t. the other order. The same-order monotonicities are automatic (an operation is monotone for its own order).
truth meet
∧ = ⊓is≤_k-monotonetruth join
∨ = ⊔is≤_k-monotoneknowledge meet
⊗is≤_t-monotoneknowledge join
⊕is≤_t-monotone
Instances
Negation #
A negation on a bilattice ([Avr96] Def 2.3) is an involution reversing
the truth order and preserving the knowledge order. The note following Def 2.3
derives the equations used below: negation exchanges the truth bounds
(∼t = f), anti-commutes with the truth lattice operations (De Morgan), and is
an automorphism of the knowledge lattice.
A negation ([Avr96] Def 2.3): an involution (i) that reverses the truth order (ii) and preserves the knowledge order (iii).
- neg : B → B
The negation operation
∼. Negation is an involution ([Avr96] Def 2.3(i)).
Negation reverses the truth order ([Avr96] Def 2.3(ii)).
Negation preserves the knowledge order ([Avr96] Def 2.3(iii)).
Instances
Negation as an antitone automorphism of the truth order, B ≃o Bᵒᵈ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Conflation #
The knowledge-order counterpart of negation ([Fit94]'s coinage; axioms
as in [Fit21]): an involution preserving the truth order and
reversing the knowledge order. With both inversions present, the carrier
splits into consistent (a ≤ₖ −a), anticonsistent (−a ≤ₖ a), and
exact (−a = a) values — the abstract forms of Kleene's, Priest's, and the
classical value spaces inside a bilattice ([Fit21] Def 8.5.1) — and the
three classes are closed under the truth operations and (when negation and
conflation commute) negation.
A conflation ([Fit21] §8.4): an involution (Con-3) that preserves the truth order (Con-2) and reverses the knowledge order (Con-1).
- conf : B → B
The conflation operation
−. Conflation is an involution (Con-3).
Conflation preserves the truth order (Con-2).
Conflation reverses the knowledge order (Con-1).
Instances
Conflation as an automorphism of the truth order.
Equations
- Bilattice.Conflation.orderIso = { toFun := Bilattice.conf, invFun := Bilattice.conf, left_inv := ⋯, right_inv := ⋯, map_rel_iff' := ⋯ }
Instances For
Conflation as an antitone automorphism of the knowledge order,
Know B ≃o (Know B)ᵒᵈ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Conflation fixes the truth top, −t = t (note following
[Fit21] Def 8.5.1).
Conflation fixes the truth bottom, −f = f.
Conflation commutes with truth meet (CDeM-1).
Conflation commutes with truth join (CDeM-2).
The consistent / anticonsistent / exact classes #
Consistent values, a ≤ₖ −a ([Fit21] Def 8.5.1): the abstract form
of the Kleene value space.
Equations
Instances For
Anticonsistent values, −a ≤ₖ a ([Fit21] Def 8.5.1): the abstract
form of Priest's LP value space.
Equations
Instances For
Exact values, −a = a ([Fit21] Def 8.5.1): the abstract classical
value space.
Equations
- Bilattice.IsExact a = (Bilattice.conf a = a)
Instances For
The truth bounds are exact ([Fit21] Prop 8.5.2).
The consistent values are closed under truth meet ([Fit21] Prop 8.5.2).
The consistent values are closed under truth join.
The anticonsistent values are closed under truth meet.
The anticonsistent values are closed under truth join.
The exact values are closed under truth meet.
The exact values are closed under truth join.
The consistent values are closed under negation ([Fit21] Prop 8.5.2; needs Con-4).
The anticonsistent values are closed under negation.
The exact values are closed under negation.
Every consistent value is knowledge-below an exact value
([Fit21] Prop 8.5.3): a ⊔ −a is exact.
Every anticonsistent value is knowledge-above an exact value
([Fit21] Prop 8.5.3): a ⊓ −a is exact.
The exact values form a knowledge-order antichain ([Fit21] Prop 8.5.4).
Representation (Avron Thm 4.3, interlaced case) #
The converse of Core.Logic.Bilattice.Product: every interlaced bilattice is
isomorphic to the product (Iic t) ⊙ (Iic f) of the knowledge-order principal
ideals of its truth bounds t = ⊤, f = ⊥. Proved here at the knowledge lattice via the
decomposition X ↦ (X ⊓ t, X ⊓ f), inverse (a, b) ↦ a ⊔ b ([Avr96] Thm
4.3). The two helper lemmas are [Avr96]'s Cor 3.5 and Cor 3.8, derived from
interlacing (Prop 3.2 → 3.6 → 3.7 → 3.8).
Avron §3 chain (interlacing helpers) #
The §3 lemmas below are stated in B-land via the knowledge operations
⊗/⊕/≤ₖ, then ported to Know B for the representation theorem. The two
truth-monotonicity facts tle_kInf_top/kInf_bot_tle (Avron's building blocks
for Prop 3.2) feed the decomposition identities decomp_kSup/decomp_kInf
(Cor 3.8 and its dual), which in turn give Cor 3.5.
[Avr96] Cor 3.5: the truth bounds are complementary in the knowledge
order (t ⊗ f = ⊥, t ⊕ f = ⊤). Derived from interlacing via decomp_kSup
(for codisjointness: every Z is ≤ₖ kT ⊕ kF) and decomp_kInf (for
disjointness: kT ⊗ kF is ≤ₖ every Z).
[Avr96] Cor 3.8(1): every element is the knowledge-join of its
knowledge-meets with the two truth bounds — X = (X ⊗ t) ⊕ (X ⊗ f). This is
decomp_kSup ported to Know B: the knowledge meets/join ⊓/⊔ on Know B
are definitionally the B-land ⊗/⊕.
[Avr96] Thm 4.3 (interlaced case): the knowledge lattice of an
interlaced bilattice decomposes as the twist product of the principal ideals of
its truth bounds, X ↦ (X ⊓ t, X ⊓ f).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The truth side of Thm 4.3 #
decompose is a knowledge-order isomorphism; the theorem below recovers the
truth order from the same components: x ≤ y iff the t-components grow and
the f-components shrink in the knowledge order — the product's twisted truth
order on the factors (cf. Bilattice.Product.mk_le_mk).
[Avr96] Thm 4.3, truth side: the truth order is recovered from the
knowledge-order decomposition — x ≤ y iff the t-components grow and the
f-components shrink in the knowledge order.
Negation and the decomposition (Avron Prop 4.7) #
With a negation, the two decomposition factors are isomorphic and the
decomposition is a diagonal product: [Avr96] Prop 4.7 exhibits
⟨B, ∼⟩ ≅ L_B ⊙ L_B with Ginsberg's swap negation, via x ↦ (x ⊗ t, x ⊗ f)
followed by (x, y) ↦ (x, ∼y). Formalized here: the ideal isomorphism
λ x, ∼x : L_B ≃o R_B (negIicIso) and the transport equation
∼x ⊗ t = ∼(x ⊗ f) (neg_kInf_top) — the two steps of Avron's proof.
[Avr96] Prop 4.7, key step: negation is an isomorphism between the
knowledge ideals L_B = Iic t and R_B = Iic f.
Equations
- One or more equations did not get rendered due to their size.