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.