TauLib.BookI.Logic.Truth4
TauLib.Logic.Truth4
The four-valued logic earned from bipolar prime polarity.
Registry Cross-References
- [I.D21] Truth4 Logic –
Truth4,Truth4.meet,Truth4.join,Truth4.neg
Ground Truth Sources
-
chunk_0228_M002194: Split-complex algebra, bipolar balance
-
chunk_0310_M002679: Bipolar partition lifts to split-complex via Chi character
Mathematical Content
The two spectral sectors (B and C) can independently confirm or deny a predicate, yielding four truth values: T (both confirm), F (both deny), B (overdetermined), N (underdetermined). These form a diamond lattice T > B, N > F.
Truth4 is isomorphic to Bool x Bool via the sector encoding: T = (true, true), F = (false, false), B = (true, false), N = (false, true).
As a lattice, Truth4 is the product 2 x 2, hence a Boolean algebra. The non-classical behavior arises not from the lattice structure but from the material implication (impl a b := join (neg a) b), which does not validate all classical tautologies when evaluated at B or N.
Tau.Logic.Truth4
source inductive Tau.Logic.Truth4 :Type
[I.D21] The four truth values from bipolar evaluation.
-
T: both sectors confirm (overdetermined-true)
-
F: both sectors deny (underdetermined-false)
-
B: B-sector confirms, C-sector denies (overdetermined / “both”)
-
N: neither sector confirms (underdetermined / “neither”)
- T : Truth4
- F : Truth4
- B : Truth4
- N : Truth4 Instances For
Tau.Logic.instDecidableEqTruth4
source instance Tau.Logic.instDecidableEqTruth4 :DecidableEq Truth4
Equations
- Tau.Logic.instDecidableEqTruth4 x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Tau.Logic.instReprTruth4.repr
source def Tau.Logic.instReprTruth4.repr :Truth4 → ℕ → Std.Format
Equations
- Tau.Logic.instReprTruth4.repr Tau.Logic.Truth4.T prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text “Tau.Logic.Truth4.T”)).group prec✝
- Tau.Logic.instReprTruth4.repr Tau.Logic.Truth4.F prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text “Tau.Logic.Truth4.F”)).group prec✝
- Tau.Logic.instReprTruth4.repr Tau.Logic.Truth4.B prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text “Tau.Logic.Truth4.B”)).group prec✝
- Tau.Logic.instReprTruth4.repr Tau.Logic.Truth4.N prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text “Tau.Logic.Truth4.N”)).group prec✝ Instances For
Tau.Logic.instReprTruth4
source instance Tau.Logic.instReprTruth4 :Repr Truth4
Equations
- Tau.Logic.instReprTruth4 = { reprPrec := Tau.Logic.instReprTruth4.repr }
Tau.Logic.instInhabitedTruth4.default
source def Tau.Logic.instInhabitedTruth4.default :Truth4
Equations
- Tau.Logic.instInhabitedTruth4.default = Tau.Logic.Truth4.T Instances For
Tau.Logic.instInhabitedTruth4
source instance Tau.Logic.instInhabitedTruth4 :Inhabited Truth4
Equations
- Tau.Logic.instInhabitedTruth4 = { default := Tau.Logic.instInhabitedTruth4.default }
Tau.Logic.Truth4.le
source def Tau.Logic.Truth4.le :Truth4 → Truth4 → Bool
Lattice ordering on Truth4. Diamond: F is bottom, T is top, B and N are incomparable middle elements. Equations
- Tau.Logic.Truth4.F.le x✝ = true
- x✝.le Tau.Logic.Truth4.T = true
- Tau.Logic.Truth4.B.le Tau.Logic.Truth4.B = true
- Tau.Logic.Truth4.N.le Tau.Logic.Truth4.N = true
- x✝¹.le x✝ = false Instances For
Tau.Logic.Truth4.meet
source def Tau.Logic.Truth4.meet :Truth4 → Truth4 → Truth4
Meet (conjunction): greatest lower bound in the diamond lattice. Equations
- Tau.Logic.Truth4.T.meet x✝ = x✝
- x✝.meet Tau.Logic.Truth4.T = x✝
- Tau.Logic.Truth4.F.meet x✝ = Tau.Logic.Truth4.F
- x✝.meet Tau.Logic.Truth4.F = Tau.Logic.Truth4.F
- Tau.Logic.Truth4.B.meet Tau.Logic.Truth4.B = Tau.Logic.Truth4.B
- Tau.Logic.Truth4.N.meet Tau.Logic.Truth4.N = Tau.Logic.Truth4.N
- Tau.Logic.Truth4.B.meet Tau.Logic.Truth4.N = Tau.Logic.Truth4.F
- Tau.Logic.Truth4.N.meet Tau.Logic.Truth4.B = Tau.Logic.Truth4.F Instances For
Tau.Logic.Truth4.join
source def Tau.Logic.Truth4.join :Truth4 → Truth4 → Truth4
Join (disjunction): least upper bound in the diamond lattice. Equations
- Tau.Logic.Truth4.F.join x✝ = x✝
- x✝.join Tau.Logic.Truth4.F = x✝
- Tau.Logic.Truth4.T.join x✝ = Tau.Logic.Truth4.T
- x✝.join Tau.Logic.Truth4.T = Tau.Logic.Truth4.T
- Tau.Logic.Truth4.B.join Tau.Logic.Truth4.B = Tau.Logic.Truth4.B
- Tau.Logic.Truth4.N.join Tau.Logic.Truth4.N = Tau.Logic.Truth4.N
- Tau.Logic.Truth4.B.join Tau.Logic.Truth4.N = Tau.Logic.Truth4.T
- Tau.Logic.Truth4.N.join Tau.Logic.Truth4.B = Tau.Logic.Truth4.T Instances For
Tau.Logic.Truth4.neg
source def Tau.Logic.Truth4.neg :Truth4 → Truth4
Negation: bipolar polarity swap. T <-> F, B <-> N. Corresponds to the polarity involution sigma on the split-complex algebra. Equations
- Tau.Logic.Truth4.T.neg = Tau.Logic.Truth4.F
- Tau.Logic.Truth4.F.neg = Tau.Logic.Truth4.T
- Tau.Logic.Truth4.B.neg = Tau.Logic.Truth4.N
- Tau.Logic.Truth4.N.neg = Tau.Logic.Truth4.B Instances For
Tau.Logic.Truth4.impl
source def Tau.Logic.Truth4.impl (a b : Truth4) :Truth4
Material implication: a -> b := join(neg a, b). Note: this does NOT validate all classical tautologies at B and N. Equations
- a.impl b = a.neg.join b Instances For
Tau.Logic.Truth4.toBoolPair
source def Tau.Logic.Truth4.toBoolPair :Truth4 → Bool × Bool
Encode Truth4 as a pair of Booleans (B-sector, C-sector). Equations
- Tau.Logic.Truth4.T.toBoolPair = (true, true)
- Tau.Logic.Truth4.F.toBoolPair = (false, false)
- Tau.Logic.Truth4.B.toBoolPair = (true, false)
- Tau.Logic.Truth4.N.toBoolPair = (false, true) Instances For
Tau.Logic.Truth4.fromBoolPair
source def Tau.Logic.Truth4.fromBoolPair :Bool × Bool → Truth4
Decode a Boolean pair back to Truth4. Equations
- Tau.Logic.Truth4.fromBoolPair (true, true) = Tau.Logic.Truth4.T
- Tau.Logic.Truth4.fromBoolPair (false, false) = Tau.Logic.Truth4.F
- Tau.Logic.Truth4.fromBoolPair (true, false) = Tau.Logic.Truth4.B
- Tau.Logic.Truth4.fromBoolPair (false, true) = Tau.Logic.Truth4.N Instances For
Tau.Logic.Truth4.meet_comm
source theorem Tau.Logic.Truth4.meet_comm (a b : Truth4) :a.meet b = b.meet a
Meet is commutative.
Tau.Logic.Truth4.join_comm
source theorem Tau.Logic.Truth4.join_comm (a b : Truth4) :a.join b = b.join a
Join is commutative.
Tau.Logic.Truth4.meet_assoc
source theorem Tau.Logic.Truth4.meet_assoc (a b c : Truth4) :(a.meet b).meet c = a.meet (b.meet c)
Meet is associative.
Tau.Logic.Truth4.join_assoc
source theorem Tau.Logic.Truth4.join_assoc (a b c : Truth4) :(a.join b).join c = a.join (b.join c)
Join is associative.
Tau.Logic.Truth4.meet_idem
source theorem Tau.Logic.Truth4.meet_idem (a : Truth4) :a.meet a = a
Meet is idempotent.
Tau.Logic.Truth4.join_idem
source theorem Tau.Logic.Truth4.join_idem (a : Truth4) :a.join a = a
Join is idempotent.
Tau.Logic.Truth4.absorption_meet_join
source theorem Tau.Logic.Truth4.absorption_meet_join (a b : Truth4) :a.meet (a.join b) = a
Absorption law: meet a (join a b) = a.
Tau.Logic.Truth4.absorption_join_meet
source theorem Tau.Logic.Truth4.absorption_join_meet (a b : Truth4) :a.join (a.meet b) = a
Absorption law: join a (meet a b) = a.
Tau.Logic.Truth4.meet_distrib_join
source theorem Tau.Logic.Truth4.meet_distrib_join (a b c : Truth4) :a.meet (b.join c) = (a.meet b).join (a.meet c)
Meet distributes over join.
Tau.Logic.Truth4.join_distrib_meet
source theorem Tau.Logic.Truth4.join_distrib_meet (a b c : Truth4) :a.join (b.meet c) = (a.join b).meet (a.join c)
Join distributes over meet.
Tau.Logic.Truth4.meet_F
source theorem Tau.Logic.Truth4.meet_F (a : Truth4) :F.meet a = F
F is the bottom element for meet.
Tau.Logic.Truth4.join_T
source theorem Tau.Logic.Truth4.join_T (a : Truth4) :T.join a = T
T is the top element for join.
Tau.Logic.Truth4.meet_T
source theorem Tau.Logic.Truth4.meet_T (a : Truth4) :T.meet a = a
T is the identity for meet.
Tau.Logic.Truth4.join_F
source theorem Tau.Logic.Truth4.join_F (a : Truth4) :F.join a = a
F is the identity for join.
Tau.Logic.Truth4.neg_involutive
source theorem Tau.Logic.Truth4.neg_involutive (v : Truth4) :v.neg.neg = v
Negation is involutive: neg (neg v) = v.
Tau.Logic.Truth4.neg_T
source theorem Tau.Logic.Truth4.neg_T :T.neg = F
neg T = F.
Tau.Logic.Truth4.neg_F
source theorem Tau.Logic.Truth4.neg_F :F.neg = T
neg F = T.
Tau.Logic.Truth4.neg_B
source theorem Tau.Logic.Truth4.neg_B :B.neg = N
neg B = N.
Tau.Logic.Truth4.neg_N
source theorem Tau.Logic.Truth4.neg_N :N.neg = B
neg N = B.
Tau.Logic.Truth4.complement_meet
source theorem Tau.Logic.Truth4.complement_meet (a : Truth4) :a.meet a.neg = F
Complement law: meet a (neg a) = F for all a.
Tau.Logic.Truth4.complement_join
source theorem Tau.Logic.Truth4.complement_join (a : Truth4) :a.join a.neg = T
Complement law: join a (neg a) = T for all a.
Tau.Logic.Truth4.de_morgan_meet
source theorem Tau.Logic.Truth4.de_morgan_meet (a b : Truth4) :(a.meet b).neg = a.neg.join b.neg
De Morgan: neg (meet a b) = join (neg a) (neg b).
Tau.Logic.Truth4.de_morgan_join
source theorem Tau.Logic.Truth4.de_morgan_join (a b : Truth4) :(a.join b).neg = a.neg.meet b.neg
De Morgan: neg (join a b) = meet (neg a) (neg b).
Tau.Logic.Truth4.toBoolPair_injective
source **theorem Tau.Logic.Truth4.toBoolPair_injective (a b : Truth4)
(h : a.toBoolPair = b.toBoolPair) :a = b**
toBoolPair is injective: distinct truth values map to distinct pairs.
Tau.Logic.Truth4.fromBoolPair_roundtrip
source theorem Tau.Logic.Truth4.fromBoolPair_roundtrip (v : Truth4) :fromBoolPair v.toBoolPair = v
Round-trip: fromBoolPair (toBoolPair v) = v.
Tau.Logic.Truth4.toBoolPair_roundtrip
source theorem Tau.Logic.Truth4.toBoolPair_roundtrip (p : Bool × Bool) :(fromBoolPair p).toBoolPair = p
Round-trip: toBoolPair (fromBoolPair p) = p for valid pairs.
Tau.Logic.Truth4.toSectorPair
source def Tau.Logic.Truth4.toSectorPair :Truth4 → Polarity.SectorPair
Map Truth4 to sector pairs: T = (1,1), F = (0,0), B = (1,0), N = (0,1). Links Truth4 to the split-complex idempotent structure from BipolarAlgebra. Equations
- Tau.Logic.Truth4.T.toSectorPair = { b_sector := 1, c_sector := 1 }
- Tau.Logic.Truth4.F.toSectorPair = { b_sector := 0, c_sector := 0 }
- Tau.Logic.Truth4.B.toSectorPair = Tau.Polarity.e_plus_sector
- Tau.Logic.Truth4.N.toSectorPair = Tau.Polarity.e_minus_sector Instances For
Tau.Logic.Truth4.B_is_e_plus
source theorem Tau.Logic.Truth4.B_is_e_plus :B.toSectorPair = Polarity.e_plus_sector
B maps to the B-sector idempotent e+.
Tau.Logic.Truth4.N_is_e_minus
source theorem Tau.Logic.Truth4.N_is_e_minus :N.toSectorPair = Polarity.e_minus_sector
N maps to the C-sector idempotent e-.
Tau.Logic.Truth4.B_meet_N_spectral
source theorem Tau.Logic.Truth4.B_meet_N_spectral :B.meet N = F
Spectral bridge: meet of B and N gives F, mirroring e+ * e- = 0.
Tau.Logic.Truth4.le_refl
source theorem Tau.Logic.Truth4.le_refl (a : Truth4) :a.le a = true
le is reflexive.
Tau.Logic.Truth4.le_F
source theorem Tau.Logic.Truth4.le_F (a : Truth4) :F.le a = true
F is the bottom element.
Tau.Logic.Truth4.le_T
source theorem Tau.Logic.Truth4.le_T (a : Truth4) :a.le T = true
T is the top element.
Tau.Logic.Truth4.B_not_le_N
source theorem Tau.Logic.Truth4.B_not_le_N :B.le N = false
B and N are incomparable (B not le N).
Tau.Logic.Truth4.N_not_le_B
source theorem Tau.Logic.Truth4.N_not_le_B :N.le B = false
B and N are incomparable (N not le B).