Equations
Equations
- instDecidablePredNatMemSetPrimes_set n = n.decidablePrime
Equations
- primes n = if n = 0 then 0 else ↑(Nat.Subtype.ofNat primes_set (n - 1))
Instances For
Equations
- primes_inv n n_prime = Nat.find ⋯
Instances For
Equations
- ⋯ = ⋯
Instances For
Equations
- cayley_table row col = ↑(primes col) - ↑(primes row)
Instances For
Structure Beta holds the variable & static data.
- d : Ds
- P : ℕ
- three_lt_P : 3 < self.P
- prime_P : Nat.Prime self.P
- primeIndex : ℕ
- k : ℕ
- k_pos : self.k > 0
- A : ℤ
- h1_B : self.d.B = cayley_table 2 (self.primeIndex + self.d.width)
- h1_L : self.d.L = cayley_table (2 + self.d.height) self.primeIndex
- E : ℤ
- h1_E : self.E = self.A
Instances For
noncomputable def
beta_fixed
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(d : Ds)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
:
We now define a function beta_fixed that builds a Beta from a Ds instance by fixing P, k, and the corresponding proofs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
noncomputable def
beta_fixed'
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ∀ (d : Ds), ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : ∀ (d : Ds),
A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : ∀ (d : Ds), d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : ∀ (d : Ds),
d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : ∀ (d : Ds), d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : ∀ (d : Ds), d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : ∀ (d : Ds),
E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
:
Define a wrapper beta_fixed' that fixes all parameters except the variable data d.
Equations
- beta_fixed' P₀ hP₀ hp₀ hk₀ hkpos₀ hkxy₀ primeIndex₀ A_val h1A h2A h1B h2B h1L h2L E_val h1E h2E d = beta_fixed P₀ hP₀ hp₀ d hk₀ hkpos₀ ⋯ primeIndex₀ A_val h1A ⋯ ⋯ ⋯ ⋯ ⋯ E_val h1E ⋯
Instances For
theorem
beta_fixed'_injective
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ∀ (d : Ds), ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : ∀ (d : Ds),
A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : ∀ (d : Ds), d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : ∀ (d : Ds),
d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : ∀ (d : Ds), d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : ∀ (d : Ds), d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : ∀ (d : Ds),
E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
:
Function.Injective (beta_fixed' P₀ hP₀ hp₀ hk₀ hkpos₀ hkxy₀ primeIndex₀ A_val h1A h2A h1B h2B h1L h2L E_val h1E h2E)
Prove that beta_fixed' is injective; that is, if two Beta values built by beta_fixed' are equal, then the underlying Ds instances are equal.
noncomputable def
beta_sub_inj
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ∀ (d : Ds), ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : ∀ (d : Ds),
A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : ∀ (d : Ds), d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : ∀ (d : Ds),
d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : ∀ (d : Ds), d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : ∀ (d : Ds), d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : ∀ (d : Ds),
E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(d : Ds)
:
Define an injection from Ds into the subtype { b : Beta // b.P = P₀ } by mapping d to ⟨beta_fixed' P₀ ... d, rfl⟩.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
beta_sub_inj_injective
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ∀ (d : Ds), ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : ∀ (d : Ds),
A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : ∀ (d : Ds), d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : ∀ (d : Ds),
d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : ∀ (d : Ds), d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : ∀ (d : Ds), d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : ∀ (d : Ds),
E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
:
Function.Injective (beta_sub_inj P₀ hP₀ hp₀ hk₀ hkpos₀ hkxy₀ primeIndex₀ A_val h1A h2A h1B h2B h1L h2L E_val h1E h2E)
Prove that beta_sub_inj is injective.
theorem
Beta_fixed_infinite
(P₀ : ℕ)
(hP₀ : 3 < P₀)
(hp₀ : Nat.Prime P₀)
(hk₀ : ℕ)
(hkpos₀ : hk₀ > 0)
(hkxy₀ : ∀ (d : Ds), ↑hk₀ = d.x + ↑d.y)
(primeIndex₀ : ℕ)
(A_val : ℤ)
(h1A : A_val = ↑P₀ - 3)
(h2A : ∀ (d : Ds),
A_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
(h1B : ∀ (d : Ds), d.B = cayley_table 2 (primeIndex₀ + d.width))
(h2B : ∀ (d : Ds),
d.B = 6 * d.x + 12 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 8 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 4 else 0)
(h1L : ∀ (d : Ds), d.L = cayley_table (2 + d.height) primeIndex₀)
(h2L : ∀ (d : Ds), d.L = 6 * d.x)
(E_val : ℤ)
(h1E : E_val = A_val)
(h2E : ∀ (d : Ds),
E_val = 6 * d.x + 6 * ↑d.y - if ↑P₀ = 6 * (d.x + ↑d.y) - 1 then 4 else if ↑P₀ = 6 * (d.x + ↑d.y) + 1 then 2 else 0)
:
Since Ds is infinite and beta_sub_inj is injective, the subtype { b : Beta // b.P = P₀ } is infinite.