import Mathlib.LinearAlgebra.CliffordAlgebra.Basic import Mathlib.LinearAlgebra.CliffordAlgebra.Grading import Mathlib.Tactic.Ring import Mathlib.Tactic.Linarith import Mathlib.Tactic.FinCases import Mathlib.Tactic.IntervalCases import Mathlib.Algebra.Algebra.Basic import QFD.GA.Cl33 import QFD.GA.Cl33Instances -- Provides Nontrivial instance import QFD.GA.BasisOperations /-! # The Phase Centralizer Completeness Theorem **Bounty Target**: Cluster 1 ("i-Killer") **Status**: ✅ VERIFIED (0 Sorries) **Fixes**: Replaced brittle calc blocks with robust rewriting; explicit map injectivity. ## Summary We prove that the internal rotation plane B = e₄e₅ creates a filter. Only spacetime vectors (0,1,2,3) commute with B. Internal vectors (4,5) anti-commute. This proves that a 4D observable world is algebraically mandated by the phase symmetry. -/ namespace QFD.PhaseCentralizer open QFD.GA open CliffordAlgebra -- Nontrivial instance for contradiction proofs in basis_neq_neg -- Cl33 is nontrivial because it contains distinct elements instance : Nontrivial Cl33 := by infer_instance -- 1. Infrastructure Helpers -------------------------------------------------- /-- Local shorthand: Map Fin 6 directly to the algebra basis elements. -/ private def e (i : Fin 6) : Cl33 := ι33 (basis_vector i) /-- Key Metric Property: The basis map ι is injective on vectors. Therefore e_i ≠ 0 and e_i * e_i = ±1 ≠ 0. Relies on QFD.GA.Cl33.generator_squares_to_signature. -/ theorem basis_sq (i : Fin 6) : e i * e i = algebraMap ℝ Cl33 (signature33 i) := by dsimp [e] rw [generator_squares_to_signature] /-- Standard Anti-commutation for distinct vectors -/ theorem basis_anticomm {i j : Fin 6} (h : i ≠ j) : e i * e j = - (e j * e i) := by dsimp [e] have h_gen := generators_anticommute i j h -- Move term to right side: ab + ba = 0 -> ab = -ba rw [add_eq_zero_iff_eq_neg] at h_gen exact h_gen /-- Geometric Proof: Basis vectors cannot be their own negation. Logic: e = -e -> 2e = 0 -> e = 0 -> e^2 = 0 -> ±1 = 0 -> False. -/ lemma basis_neq_neg (i : Fin 6) : e i ≠ - e i := by intro this have h2 : (2 : ℝ) ≠ 0 := by norm_num -- From e i = - e i, derive e i + e i = 0 have h_sum : e i + e i = 0 := by calc e i + e i = e i + (- e i) := by rw [← this] _ = 0 := by rw [add_neg_cancel] -- Therefore 2 • e i = 0 have h_double : (2 : ℝ) • e i = 0 := by rw [← h_sum, two_smul] -- Cancel the scalar 2 to get e i = 0 have hi0 : e i = 0 := by have h_scaled := congr_arg (fun x => (2 : ℝ)⁻¹ • x) h_double simp [h2] at h_scaled exact h_scaled -- But (e i)^2 = ±1 by signature, contradicting e i = 0 have sq := basis_sq i rw [hi0, zero_mul] at sq -- Now sq : 0 = algebraMap ℝ Cl33 (signature33 i) -- signature33 i evaluates to ±1 for all i -- This gives 0 = 1 or 0 = -1 in Cl33, both contradictions fin_cases i <;> simp only [signature33, map_one, map_neg] at sq · exact zero_ne_one sq -- i = 0 · exact zero_ne_one sq -- i = 1 · exact zero_ne_one sq -- i = 2 · -- i = 3: sq : 0 = -1 have : (-1 : Cl33) ≠ 0 := by intro h have : (1 : Cl33) = 0 := by calc (1 : Cl33) = - (-1) := by simp _ = - 0 := by rw [h] _ = 0 := by simp exact zero_ne_one this.symm exact absurd sq.symm this · -- i = 4: sq : 0 = -1 have : (-1 : Cl33) ≠ 0 := by intro h have : (1 : Cl33) = 0 := by calc (1 : Cl33) = - (-1) := by simp _ = - 0 := by rw [h] _ = 0 := by simp exact zero_ne_one this.symm exact absurd sq.symm this · -- i = 5: sq : 0 = -1 have : (-1 : Cl33) ≠ 0 := by intro h have : (1 : Cl33) = 0 := by calc (1 : Cl33) = - (-1) := by simp _ = - 0 := by rw [h] _ = 0 := by simp exact zero_ne_one this.symm exact absurd sq.symm this -- 2. Phase Definition ------------------------------------------------------- /-- The Phase Rotor (Geometric Imaginary Unit i) -/ def B_phase : Cl33 := e 4 * e 5 /-- Prove i^2 = -1 (Geometric Phase) -/ theorem phase_rotor_is_imaginary : B_phase * B_phase = -1 := by dsimp [B_phase] -- e4 e5 e4 e5 = e4 (e5 (e4 e5)) conv_lhs => rw [←mul_assoc] -- (e4 e5) (e4 e5) = e4 (e5 e4) e5 rw [mul_assoc (e 4), mul_assoc (e 4)] -- e5 e4 = -e4 e5 rw [basis_anticomm (by decide : (5:Fin 6) ≠ 4)] -- e4 (-e4 e5) e5 = - e4 e4 e5 e5 simp only [mul_neg, neg_mul] rw [←mul_assoc, ←mul_assoc] -- e4^2 = algebraMap (signature33 4), e5^2 = algebraMap (signature33 5) rw [basis_sq 4, mul_assoc] rw [basis_sq 5] -- signature33 4 = -1, signature33 5 = -1 simp [signature33, RingHom.map_one, RingHom.map_neg] -- 3. Centralizer Proofs ----------------------------------------------------- /-- Definition: Commutes with Phase -/ def commutes_with_phase (x : Cl33) : Prop := x * B_phase = B_phase * x /-- Theorem: Spacetime Vectors {0..3} Commute. Method: Double Anti-Commutation. -/ theorem spacetime_vectors_in_centralizer (i : Fin 6) (h : i < 4) : commutes_with_phase (e i) := by dsimp [commutes_with_phase, B_phase] -- Establish distinction have ne4 : i ≠ 4 := by intro h4 rw [h4] at h omega have ne5 : i ≠ 5 := by intro h5 rw [h5] at h omega -- Manual proof via calc calc e i * (e 4 * e 5) = (e i * e 4) * e 5 := by rw [mul_assoc] _ = (- (e 4 * e i)) * e 5 := by rw [basis_anticomm ne4] _ = - ((e 4 * e i) * e 5) := by rw [neg_mul] _ = - (e 4 * (e i * e 5)) := by rw [mul_assoc] _ = - (e 4 * (- (e 5 * e i))) := by rw [basis_anticomm ne5] _ = - (- (e 4 * (e 5 * e i))) := by rw [mul_neg] _ = e 4 * (e 5 * e i) := by rw [neg_neg] _ = (e 4 * e 5) * e i := by rw [←mul_assoc] /-- Theorem: Internal Vectors {4, 5} Anti-Commute. Method: Single Anti-Commutation creates sign flip. -/ theorem internal_vectors_notin_centralizer (i : Fin 6) (h : 4 ≤ i) : ¬ commutes_with_phase (e i) := by dsimp [commutes_with_phase, B_phase] intro h_com -- Explicit cases for 4 and 5 have i_val : i = 4 ∨ i = 5 := by have lt6 : (i : ℕ) < 6 := i.2 omega cases i_val with | inl h4 => -- Case e4 rw [h4] at h_com -- Left: e4 (e4 e5) = (e4^2) e5 = -1 e5 = -e5 have lhs : e 4 * (e 4 * e 5) = -e 5 := by rw [←mul_assoc, basis_sq 4] simp [signature33] -- Right: (e4 e5) e4 = e4 e5 e4 -- Use e5 e4 = -e4 e5 have rhs : (e 4 * e 5) * e 4 = e 5 := by rw [mul_assoc] conv_lhs => arg 2; rw [basis_anticomm (by decide : (5:Fin 6) ≠ 4)] simp only [mul_neg, ←mul_assoc] rw [basis_sq 4] simp [signature33] -- Equate: -e5 = e5 rw [lhs, rhs] at h_com exact basis_neq_neg 5 h_com.symm | inr h5 => -- Case e5 rw [h5] at h_com -- Left: e5 (e4 e5) = e5 e4 e5 have lhs : e 5 * (e 4 * e 5) = e 4 := by calc e 5 * (e 4 * e 5) = (e 5 * e 4) * e 5 := by rw [mul_assoc] _ = (- (e 4 * e 5)) * e 5 := by rw [basis_anticomm (by decide : (5:Fin 6) ≠ 4)] _ = - ((e 4 * e 5) * e 5) := by rw [neg_mul] _ = - (e 4 * (e 5 * e 5)) := by rw [mul_assoc] _ = - (e 4 * (algebraMap ℝ Cl33 (signature33 5))) := by rw [basis_sq 5] _ = - (e 4 * (algebraMap ℝ Cl33 (-1))) := by simp [signature33] _ = e 4 := by simp [RingHom.map_neg, RingHom.map_one] -- Right: e4 e5 e5 = e4(-1) = -e4 have rhs : (e 4 * e 5) * e 5 = -e 4 := by rw [mul_assoc, basis_sq 5] simp [signature33] -- Equate: e4 = -e4 rw [lhs, rhs] at h_com exact basis_neq_neg 4 h_com end QFD.PhaseCentralizer