TauLib.BookI.Polarity.BipolarAlgebra
TauLib.Polarity.BipolarAlgebra
The bipolar spectral algebra H_τ with split-complex scalars.
Registry Cross-References
-
[I.D28] Boundary Local Ring —
BdryRing -
[I.T10] Split-Complex Forced —
split_complex_forced,no_elliptic_idempotent -
[I.D27] Bipolar Spectral Algebra —
SplitComplex,e_plus,e_minus
Ground Truth Sources
-
chunk_0228_M002194: Split-complex algebra, bipolar balance, τ-RH scalar structure
-
chunk_0310_M002679: Bipolar partition lifts to split-complex via Chi character
Mathematical Content
The boundary local ring ℤ̂_τ = lim Z/M_k Z inherits componentwise ring structure. Extending by the split-complex unit j (with j² = +1) gives the bipolar spectral algebra H_τ = ℤ̂_τ[j].
The key theorem (I.T10): split-complex scalars (j² = +1) are FORCED by the bipolar prime partition. The elliptic alternative (i² = -1) admits no nontrivial idempotents over Z, so it cannot encode the bipolar structure.
The canonical idempotents e± = (1±j)/2 decompose H_τ into B-sector and C-sector, mirroring the polarity partition of the primes.
Tau.Polarity.bdry_add
source def Tau.Polarity.bdry_add (x y k : Denotation.TauIdx) :Denotation.TauIdx
Boundary ring element at stage k: a pair of Z/M_kZ values (for add/mul). Equations
- Tau.Polarity.bdry_add x y k = (x + y) % Tau.Polarity.primorial k Instances For
Tau.Polarity.bdry_mul
source def Tau.Polarity.bdry_mul (x y k : Denotation.TauIdx) :Denotation.TauIdx
Equations
- Tau.Polarity.bdry_mul x y k = x * y % Tau.Polarity.primorial k Instances For
Tau.Polarity.bdry_neg
source def Tau.Polarity.bdry_neg (x k : Denotation.TauIdx) :Denotation.TauIdx
Equations
- Tau.Polarity.bdry_neg x k = (Tau.Polarity.primorial k - x % Tau.Polarity.primorial k) % Tau.Polarity.primorial k Instances For
Tau.Polarity.SplitComplex
source structure Tau.Polarity.SplitComplex :Type
[I.D27] Split-complex number: a + bj where j² = +1. Represented as a pair of integers.
- re : ℤ
- im : ℤ Instances For
Tau.Polarity.instDecidableEqSplitComplex
source instance Tau.Polarity.instDecidableEqSplitComplex :DecidableEq SplitComplex
Equations
- Tau.Polarity.instDecidableEqSplitComplex = Tau.Polarity.instDecidableEqSplitComplex.decEq
Tau.Polarity.instDecidableEqSplitComplex.decEq
source def Tau.Polarity.instDecidableEqSplitComplex.decEq (x✝ x✝¹ : SplitComplex) :Decidable (x✝ = x✝¹)
Equations
- Tau.Polarity.instDecidableEqSplitComplex.decEq { re := a, im := a_1 } { re := b, im := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯ Instances For
Tau.Polarity.instReprSplitComplex
source instance Tau.Polarity.instReprSplitComplex :Repr SplitComplex
Equations
- Tau.Polarity.instReprSplitComplex = { reprPrec := Tau.Polarity.instReprSplitComplex.repr }
Tau.Polarity.instReprSplitComplex.repr
source def Tau.Polarity.instReprSplitComplex.repr :SplitComplex → ℕ → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Polarity.instInhabitedSplitComplex
source instance Tau.Polarity.instInhabitedSplitComplex :Inhabited SplitComplex
Equations
- Tau.Polarity.instInhabitedSplitComplex = { default := { re := 0, im := 0 } }
Tau.Polarity.SplitComplex.zero
source def Tau.Polarity.SplitComplex.zero :SplitComplex
Split-complex zero. Equations
- Tau.Polarity.SplitComplex.zero = { re := 0, im := 0 } Instances For
Tau.Polarity.SplitComplex.one
source def Tau.Polarity.SplitComplex.one :SplitComplex
Split-complex one. Equations
- Tau.Polarity.SplitComplex.one = { re := 1, im := 0 } Instances For
Tau.Polarity.SplitComplex.j
source def Tau.Polarity.SplitComplex.j :SplitComplex
The split-complex unit j. Equations
- Tau.Polarity.SplitComplex.j = { re := 0, im := 1 } Instances For
Tau.Polarity.SplitComplex.add
source def Tau.Polarity.SplitComplex.add (a b : SplitComplex) :SplitComplex
Split-complex addition. Equations
- a.add b = { re := a.re + b.re, im := a.im + b.im } Instances For
Tau.Polarity.SplitComplex.neg
source def Tau.Polarity.SplitComplex.neg (a : SplitComplex) :SplitComplex
Split-complex negation. Equations
- a.neg = { re := -a.re, im := -a.im } Instances For
Tau.Polarity.SplitComplex.mul
source def Tau.Polarity.SplitComplex.mul (a b : SplitComplex) :SplitComplex
Split-complex multiplication: (a + bj)(c + dj) = (ac + bd) + (ad + bc)j. Uses j² = +1. Equations
- a.mul b = { re := a.re * b.re + a.im * b.im, im := a.re * b.im + a.im * b.re } Instances For
Tau.Polarity.SplitComplex.sub
source def Tau.Polarity.SplitComplex.sub (a b : SplitComplex) :SplitComplex
Split-complex subtraction. Equations
- a.sub b = a.add b.neg Instances For
Tau.Polarity.j_squared
source theorem Tau.Polarity.j_squared :SplitComplex.j.mul SplitComplex.j = SplitComplex.one
j² = 1: the defining property of split-complex numbers.
Tau.Polarity.SectorPair
source structure Tau.Polarity.SectorPair :Type
[I.D27] Sector pair: the isomorphic representation (u, v) = (re + im, re - im). In sector coordinates, multiplication is componentwise.
- b_sector : ℤ
- c_sector : ℤ Instances For
Tau.Polarity.instDecidableEqSectorPair
source instance Tau.Polarity.instDecidableEqSectorPair :DecidableEq SectorPair
Equations
- Tau.Polarity.instDecidableEqSectorPair = Tau.Polarity.instDecidableEqSectorPair.decEq
Tau.Polarity.instDecidableEqSectorPair.decEq
source def Tau.Polarity.instDecidableEqSectorPair.decEq (x✝ x✝¹ : SectorPair) :Decidable (x✝ = x✝¹)
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Polarity.instReprSectorPair.repr
source def Tau.Polarity.instReprSectorPair.repr :SectorPair → ℕ → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Polarity.instReprSectorPair
source instance Tau.Polarity.instReprSectorPair :Repr SectorPair
Equations
- Tau.Polarity.instReprSectorPair = { reprPrec := Tau.Polarity.instReprSectorPair.repr }
Tau.Polarity.to_sectors
source def Tau.Polarity.to_sectors (z : SplitComplex) :SectorPair
Convert split-complex to sector representation. Equations
- Tau.Polarity.to_sectors z = { b_sector := z.re + z.im, c_sector := z.re - z.im } Instances For
Tau.Polarity.SectorPair.add
source def Tau.Polarity.SectorPair.add (a b : SectorPair) :SectorPair
Sector addition (componentwise). Equations
- a.add b = { b_sector := a.b_sector + b.b_sector, c_sector := a.c_sector + b.c_sector } Instances For
Tau.Polarity.SectorPair.mul
source def Tau.Polarity.SectorPair.mul (a b : SectorPair) :SectorPair
Sector multiplication (componentwise). Equations
- a.mul b = { b_sector := a.b_sector * b.b_sector, c_sector := a.c_sector * b.c_sector } Instances For
Tau.Polarity.sectors_add
source theorem Tau.Polarity.sectors_add (a b : SplitComplex) :to_sectors (a.add b) = (to_sectors a).add (to_sectors b)
Homomorphism check: to_sectors preserves addition.
Tau.Polarity.sectors_mul
source theorem Tau.Polarity.sectors_mul (a b : SplitComplex) :to_sectors (a.mul b) = (to_sectors a).mul (to_sectors b)
Homomorphism check: to_sectors preserves multiplication.
Tau.Polarity.e_plus_sector
source def Tau.Polarity.e_plus_sector :SectorPair
The B-sector idempotent e+ in sector coordinates: (1, 0). In split-complex coordinates: e+ = (1+j)/2 (defined over Z[1/2]). Equations
- Tau.Polarity.e_plus_sector = { b_sector := 1, c_sector := 0 } Instances For
Tau.Polarity.e_minus_sector
source def Tau.Polarity.e_minus_sector :SectorPair
The C-sector idempotent e- in sector coordinates: (0, 1). Equations
- Tau.Polarity.e_minus_sector = { b_sector := 0, c_sector := 1 } Instances For
Tau.Polarity.e_plus_idem
source theorem Tau.Polarity.e_plus_idem :e_plus_sector.mul e_plus_sector = e_plus_sector
e+² = e+ (idempotent).
Tau.Polarity.e_minus_idem
source theorem Tau.Polarity.e_minus_idem :e_minus_sector.mul e_minus_sector = e_minus_sector
e-² = e- (idempotent).
Tau.Polarity.e_orthogonal
source theorem Tau.Polarity.e_orthogonal :e_plus_sector.mul e_minus_sector = { b_sector := 0, c_sector := 0 }
e+ · e- = 0 (orthogonal).
Tau.Polarity.e_partition
source theorem Tau.Polarity.e_partition :e_plus_sector.add e_minus_sector = { b_sector := 1, c_sector := 1 }
e+ + e- = 1 (partition of unity).
Tau.Polarity.GaussInt
source structure Tau.Polarity.GaussInt :Type
An “elliptic” number: a + bi where i² = -1. We represent as integer pairs (Gaussian integers).
- re : ℤ
- im : ℤ Instances For
Tau.Polarity.instDecidableEqGaussInt.decEq
source def Tau.Polarity.instDecidableEqGaussInt.decEq (x✝ x✝¹ : GaussInt) :Decidable (x✝ = x✝¹)
Equations
- Tau.Polarity.instDecidableEqGaussInt.decEq { re := a, im := a_1 } { re := b, im := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯ Instances For
Tau.Polarity.instDecidableEqGaussInt
source instance Tau.Polarity.instDecidableEqGaussInt :DecidableEq GaussInt
Equations
- Tau.Polarity.instDecidableEqGaussInt = Tau.Polarity.instDecidableEqGaussInt.decEq
Tau.Polarity.instReprGaussInt.repr
source def Tau.Polarity.instReprGaussInt.repr :GaussInt → ℕ → Std.Format
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Polarity.instReprGaussInt
source instance Tau.Polarity.instReprGaussInt :Repr GaussInt
Equations
- Tau.Polarity.instReprGaussInt = { reprPrec := Tau.Polarity.instReprGaussInt.repr }
Tau.Polarity.GaussInt.mul
source def Tau.Polarity.GaussInt.mul (a b : GaussInt) :GaussInt
Gaussian integer multiplication: (a+bi)(c+di) = (ac-bd) + (ad+bc)i. Uses i² = -1. Equations
- a.mul b = { re := a.re * b.re - a.im * b.im, im := a.re * b.im + a.im * b.re } Instances For
Tau.Polarity.GaussInt.ext
source **theorem Tau.Polarity.GaussInt.ext {a b : GaussInt}
(hre : a.re = b.re)
(him : a.im = b.im) :a = b**
Tau.Polarity.GaussInt.ext_iff
source theorem Tau.Polarity.GaussInt.ext_iff {a b : GaussInt} :a = b ↔ a.re = b.re ∧ a.im = b.im
Tau.Polarity.no_elliptic_idempotent
source **theorem Tau.Polarity.no_elliptic_idempotent (z : GaussInt)
(h : z.mul z = z) :z = { re := 0, im := 0 } ∨ z = { re := 1, im := 0 }**
[I.T10] No nontrivial idempotent in the Gaussian integers: if (a+bi)² = (a+bi) over Z, then (a,b) = (0,0) or (a,b) = (1,0).
Proof: From (a+bi)² = a+bi:
-
Real part: a² - b² = a
-
Imaginary part: 2ab = b From 2ab = b: either b = 0 or 2a = 1 (impossible in Z). If b = 0: a² = a, so a(a-1) = 0, hence a = 0 or a = 1.
Tau.Polarity.split_complex_forced
source theorem Tau.Polarity.split_complex_forced :(∃ (e : SectorPair), e.mul e = e ∧ e ≠ { b_sector := 0, c_sector := 0 } ∧ e ≠ { b_sector := 1, c_sector := 1 }) ∧ ∀ (z : GaussInt), z.mul z = z → z = { re := 0, im := 0 } ∨ z = { re := 1, im := 0 }
[I.T10] Split-complex forced: the split-complex algebra (j² = +1) admits nontrivial idempotents (e+, e-), while the elliptic algebra (i² = -1) does not. Therefore, encoding a bipolar partition requires j² = +1.
Tau.Polarity.polarity_inv
source def Tau.Polarity.polarity_inv (z : SplitComplex) :SplitComplex
The polarity involution σ: j ↦ -j, i.e., (a, b) ↦ (a, -b). Equations
- Tau.Polarity.polarity_inv z = { re := z.re, im := -z.im } Instances For
Tau.Polarity.polarity_inv_squared
source theorem Tau.Polarity.polarity_inv_squared (z : SplitComplex) :polarity_inv (polarity_inv z) = z
σ² = id.
Tau.Polarity.polarity_inv_fixes_real
source theorem Tau.Polarity.polarity_inv_fixes_real (a : ℤ) :polarity_inv { re := a, im := 0 } = { re := a, im := 0 }
σ fixes the real part.
Tau.Polarity.polarity_inv_j
source theorem Tau.Polarity.polarity_inv_j :polarity_inv SplitComplex.j = SplitComplex.j.neg
σ(j) = -j.
Tau.Polarity.polarity_inv_swaps_sectors
source theorem Tau.Polarity.polarity_inv_swaps_sectors (z : SplitComplex) :to_sectors (polarity_inv z) = { b_sector := (to_sectors z).c_sector, c_sector := (to_sectors z).b_sector }
σ swaps sectors: σ maps (u, v) to (v, u) in sector coordinates.
Tau.Polarity.chi_split
source def Tau.Polarity.chi_split (p N : Denotation.TauIdx) :SectorPair
[chunk_0228] Split-complex lift of the polarity character. Maps the Int-valued polarity_chi to sector idempotents:
-
B-dominant (chi = -1) → e_plus_sector = (1, 0)
-
C-dominant (chi = +1) → e_minus_sector = (0, 1)
-
non-prime (chi = 0) → (0, 0) Ground truth: chunk_0228_M002194 — χ̃(p) ∈ {e⁻, e⁺}.
Equations
- One or more equations did not get rendered due to their size. Instances For
Tau.Polarity.chi_split_idempotent
source theorem Tau.Polarity.chi_split_idempotent (p N : Denotation.TauIdx) :(chi_split p N).mul (chi_split p N) = chi_split p N
chi_split is idempotent-valued: the output squares to itself.
Tau.Polarity.chi_split_of_b
source **theorem Tau.Polarity.chi_split_of_b (p N : Denotation.TauIdx)
(h : polarity_chi p N = -1) :chi_split p N = e_plus_sector**
Bridge theorem: polarity_chi = -1 implies chi_split = e_plus_sector.
Tau.Polarity.chi_split_of_c
source **theorem Tau.Polarity.chi_split_of_c (p N : Denotation.TauIdx)
(h : polarity_chi p N = 1) :chi_split p N = e_minus_sector**
Bridge theorem: polarity_chi = +1 implies chi_split = e_minus_sector.
Tau.Polarity.chi_split_orthogonal
source **theorem Tau.Polarity.chi_split_orthogonal (p q N : Denotation.TauIdx)
(hp : polarity_chi p N = -1)
(hq : polarity_chi q N = 1) :(chi_split p N).mul (chi_split q N) = { b_sector := 0, c_sector := 0 }**
The two character representations are orthogonal: chi_split for B-dominant and C-dominant primes give orthogonal sectors.