pith. machine review for the scientific record. sign in

IndisputableMonolith.Physics.CubeSpectrum

IndisputableMonolith/Physics/CubeSpectrum.lean · 126 lines · 25 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2
   3/-!
   4# Q₃ Cube Spectral Formalism
   5
   6The 3-dimensional hypercube Q₃ (unit cell of ℤ³) has 8 vertices, 12 edges,
   76 faces. Its graph Laplacian has eigenvalues {0, 2, 2, 2, 4, 4, 4, 6} with
   8multiplicities {1, 3, 3, 1}. The automorphism group is S₄ × ℤ₂³ of order 48.
   9
  10This module formalizes the combinatorial and spectral properties of Q₃ that
  11underpin the critical exponent corrections in Recognition Science.
  12-/
  13
  14namespace IndisputableMonolith
  15namespace Physics
  16namespace CubeSpectrum
  17
  18/-! ## Q₃ Combinatorics -/
  19
  20def Q3_vertices : ℕ := 8
  21def Q3_edges : ℕ := 12
  22def Q3_faces : ℕ := 6
  23def Q3_degree : ℕ := 3
  24
  25theorem Q3_euler : Q3_vertices + Q3_faces = Q3_edges + 2 := by
  26  unfold Q3_vertices Q3_edges Q3_faces; omega
  27
  28theorem Q3_edge_count : Q3_edges = Q3_degree * Q3_vertices / 2 := by
  29  unfold Q3_edges Q3_degree Q3_vertices; omega
  30
  31theorem Q3_vertices_eq : Q3_vertices = 2 ^ Q3_degree := by
  32  unfold Q3_vertices Q3_degree; omega
  33
  34/-! ## Q₃ Laplacian Spectrum
  35
  36The graph Laplacian L = D − A of Q₃ has eigenvalues determined by the
  37Hamming weight of binary vectors in {0,1}³. For vertex v with Hamming
  38weight w(v), the eigenvalue is 2·w(v). The spectrum is:
  39- λ₀ = 0 (multiplicity 1, the all-ones eigenvector)
  40- λ₁ = 2 (multiplicity 3, the three coordinate functions)
  41- λ₂ = 4 (multiplicity 3, the three pairwise products)
  42- λ₃ = 6 (multiplicity 1, the parity function)
  43-/
  44
  45def Q3_laplacian_eigenvalues : List ℕ := [0, 2, 2, 2, 4, 4, 4, 6]
  46
  47def Q3_spectral_gap : ℕ := 2
  48def Q3_max_eigenvalue : ℕ := 6
  49
  50theorem Q3_eigenvalue_count : Q3_laplacian_eigenvalues.length = Q3_vertices := by
  51  unfold Q3_laplacian_eigenvalues Q3_vertices; native_decide
  52
  53theorem Q3_trace : Q3_laplacian_eigenvalues.sum = Q3_degree * Q3_vertices := by
  54  unfold Q3_laplacian_eigenvalues Q3_degree Q3_vertices; native_decide
  55
  56theorem Q3_max_eigenvalue_eq : Q3_max_eigenvalue = 2 * Q3_degree := by
  57  unfold Q3_max_eigenvalue Q3_degree; omega
  58
  59/-- The multiplicities are {1, 3, 3, 1} = binomial coefficients C(3,k). -/
  60def Q3_multiplicities : List ℕ := [1, 3, 3, 1]
  61
  62theorem Q3_multiplicities_sum : Q3_multiplicities.sum = Q3_vertices := by
  63  unfold Q3_multiplicities Q3_vertices; native_decide
  64
  65theorem Q3_multiplicities_are_binomial :
  66    Q3_multiplicities = [Nat.choose 3 0, Nat.choose 3 1, Nat.choose 3 2, Nat.choose 3 3] := by
  67  unfold Q3_multiplicities; native_decide
  68
  69/-! ## Automorphism Group -/
  70
  71/-- |Aut(Q₃)| = 48 = |S₃| · |ℤ₂|³ · ... = 2³ · 3! = 8 · 6 = 48.
  72    More precisely, Aut(Q_D) = S_D ⋊ ℤ₂^D, order D! · 2^D. -/
  73def Q3_aut_order : ℕ := 48
  74
  75theorem Q3_aut_order_eq : Q3_aut_order = Nat.factorial Q3_degree * 2 ^ Q3_degree := by
  76  unfold Q3_aut_order Q3_degree; native_decide
  77
  78/-- The face-pair count: 2D² = 18 for D = 3.
  79    This is the structural number that appears in the η₂ correction. -/
  80def Q3_face_pair_count : ℕ := 2 * Q3_degree ^ 2
  81
  82theorem Q3_face_pair_count_eq : Q3_face_pair_count = 18 := by
  83  unfold Q3_face_pair_count Q3_degree; omega
  84
  85/-- The critical simplex vertex count: D + 1 = 4 for D = 3.
  86    This is the structural number that appears in the η₁ correction. -/
  87def Q3_simplex_vertices : ℕ := Q3_degree + 1
  88
  89theorem Q3_simplex_vertices_eq : Q3_simplex_vertices = 4 := by
  90  unfold Q3_simplex_vertices Q3_degree; omega
  91
  92/-! ## Spectral Ratios
  93
  94The ratios of consecutive eigenvalues determine the correction-to-scaling
  95structure. The key ratio λ₂/λ₁ = 4/2 = 2 governs the subleading RG eigenvalue.
  96-/
  97
  98theorem Q3_eigenvalue_ratio : Q3_max_eigenvalue / Q3_spectral_gap = Q3_degree := by
  99  unfold Q3_max_eigenvalue Q3_spectral_gap Q3_degree; omega
 100
 101/-! ## Certificate -/
 102
 103structure Q3Cert where
 104  vertices : Q3_vertices = 8
 105  edges : Q3_edges = 12
 106  faces : Q3_faces = 6
 107  euler : Q3_vertices + Q3_faces = Q3_edges + 2
 108  trace : Q3_laplacian_eigenvalues.sum = Q3_degree * Q3_vertices
 109  aut_order : Q3_aut_order = 48
 110  face_pairs : Q3_face_pair_count = 18
 111  simplex_verts : Q3_simplex_vertices = 4
 112
 113def q3Cert : Q3Cert where
 114  vertices := rfl
 115  edges := rfl
 116  faces := rfl
 117  euler := Q3_euler
 118  trace := Q3_trace
 119  aut_order := rfl
 120  face_pairs := Q3_face_pair_count_eq
 121  simplex_verts := Q3_simplex_vertices_eq
 122
 123end CubeSpectrum
 124end Physics
 125end IndisputableMonolith
 126

source mirrored from github.com/jonwashburn/shape-of-logic