/-
Copyright 2026 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilConjectures associated with A56777
A56777 lists composite numbers $n$ satisfying both $\varphi(n+12) = \varphi(n) + 12$ and $\sigma(n+12) = \sigma(n) + 12$.
The conjectures state identities connecting A56777 and prime quadruples (A7530), as well as congruences satisfied by the members of A56777.
namespace OeisA56777
open Natopen scoped ArithmeticFunction.sigmaA composite number $n$ is in the sequence A56777 if it satisfies both $\varphi(n+12) = \varphi(n) + 12$ and $\sigma(n+12) = \sigma(n) + 12$.
def A (n : ℕ) : Prop :=
¬n.Prime ∧ 1 < n ∧ totient (n + 12) = totient n + 12 ∧ σ 1 (n + 12) = σ 1 n + 12A number $n$ comes from a prime quadruple $(p, p+2, p+6, p+8)$ if $n = p(p+8)$ for some prime $p$ where $p$, $p+2$, $p+6$, $p+8$ are all prime.
def ComesFromPrimeQuadruple (n : ℕ) : Prop :=
∃ p : ℕ, p.Prime ∧ (p + 2).Prime ∧ (p + 6).Prime ∧ (p + 8).Prime ∧ n = p * (p + 8)$65$ is in the sequence A56777.
@[category test, AMS 11]
theorem a_65 : A 65 := ⊢ A 65
refine ⟨?_, ⊢ 1 < 65 All goals completed! 🐙, ?_, ?_⟩
⊢ ¬Nat.Prime 65 ⊢ ¬Nat.Prime (5 * 13)
exact not_prime_mul (⊢ 5 ≠ 1 All goals completed! 🐙) (⊢ 13 ≠ 1 All goals completed! 🐙)
⊢ φ (65 + 12) = φ 65 + 12 All goals completed! 🐙
⊢ (σ 1) (65 + 12) = (σ 1) 65 + 12 All goals completed! 🐙$209$ is in the sequence A56777.
@[category test, AMS 11]
theorem a_209 : A 209 := ⊢ A 209
set_option maxRecDepth 1000 in
refine ⟨?_, ⊢ 1 < 209 All goals completed! 🐙, ?_, ?_⟩
⊢ ¬Nat.Prime 209 ⊢ ¬Nat.Prime (11 * 19)
exact not_prime_mul (⊢ 11 ≠ 1 All goals completed! 🐙) (⊢ 19 ≠ 1 All goals completed! 🐙)
⊢ φ (209 + 12) = φ 209 + 12 All goals completed! 🐙
⊢ (σ 1) (209 + 12) = (σ 1) 209 + 12 All goals completed! 🐙Numbers coming from prime quadruples are in the sequence A56777.
@[category textbook, AMS 11]
theorem a_of_comesFromPrimeQuadruple {n : ℕ} (h : ComesFromPrimeQuadruple n) : A n := n:ℕh:ComesFromPrimeQuadruple n⊢ A n
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)⊢ A (p * (p + 8))
-- n + 12 = p * (p+8) + 12 = (p+2) * (p+6)
have hsum : p * (p + 8) + 12 = (p + 2) * (p + 6) := n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙
-- coprimality facts between the four primes
have hne_p_p8 : p ≠ p + 8 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙
have hne_p2_p6 : p + 2 ≠ p + 6 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8⊢ A (p * (p + 8))
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ A (p * (p + 8))
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ ¬Nat.Prime (p * (p + 8))p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ 1 < p * (p + 8)p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ φ (p * (p + 8) + 12) = φ (p * (p + 8)) + 12p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ (σ 1) (p * (p + 8) + 12) = (σ 1) (p * (p + 8)) + 12
-- ¬ Prime (p * (p+8))
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ ¬Nat.Prime (p * (p + 8)) exact Nat.not_prime_mul hp.one_lt.ne' (p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ p + 8 ≠ 1 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6this:1 < p + 8 := Prime.one_lt hp8⊢ p + 8 ≠ 1; All goals completed! 🐙)
-- 1 < p * (p+8)
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ 1 < p * (p + 8) p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6h1:2 ≤ p := Prime.two_le hp⊢ 1 < p * (p + 8)
have h2 : 10 ≤ p + 8 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙
All goals completed! 🐙
-- totient: φ((p+2)(p+6)) = φ(p(p+8)) + 12
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ φ (p * (p + 8) + 12) = φ (p * (p + 8)) + 12 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ (p + 2 - 1) * (p + 6 - 1) = (p - 1) * (p + 8 - 1) + 12
zify [show 1 ≤ p from hp.one_lt.le, show 1 ≤ p + 2 n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙,
show 1 ≤ p + 6 n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙, show 1 ≤ p + 8 n:ℕh:ComesFromPrimeQuadruple n⊢ A n All goals completed! 🐙]
All goals completed! 🐙
-- sigma: σ₁((p+2)(p+6)) = σ₁(p(p+8)) + 12
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ (σ 1) (p * (p + 8) + 12) = (σ 1) (p * (p + 8)) + 12 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6⊢ (σ 1) (p + 2) * (σ 1) (p + 6) = (σ 1) p * (σ 1) (p + 8) + 12
have e1 : ArithmeticFunction.sigma 1 p = p + 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6this:(σ 1) (p ^ 1) = ∑ k ∈ Finset.range (1 + 1), p ^ k := ArithmeticFunction.sigma_one_apply_prime_pow hp⊢ (σ 1) p = p + 1
All goals completed! 🐙
have e2 : ArithmeticFunction.sigma 1 (p + 2) = (p + 2) + 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6e1:(σ 1) p = p + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one p)) geom_sum_two) thisthis:(σ 1) ((p + 2) ^ 1) = ∑ k ∈ Finset.range (1 + 1), (p + 2) ^ k := ArithmeticFunction.sigma_one_apply_prime_pow hp2⊢ (σ 1) (p + 2) = p + 2 + 1
All goals completed! 🐙
have e6 : ArithmeticFunction.sigma 1 (p + 6) = (p + 6) + 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6e1:(σ 1) p = p + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one p)) geom_sum_two) thise2:(σ 1) (p + 2) = p + 2 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp2;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 2))) geom_sum_two) thisthis:(σ 1) ((p + 6) ^ 1) = ∑ k ∈ Finset.range (1 + 1), (p + 6) ^ k := ArithmeticFunction.sigma_one_apply_prime_pow hp6⊢ (σ 1) (p + 6) = p + 6 + 1
All goals completed! 🐙
have e8 : ArithmeticFunction.sigma 1 (p + 8) = (p + 8) + 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ A n
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6e1:(σ 1) p = p + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one p)) geom_sum_two) thise2:(σ 1) (p + 2) = p + 2 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp2;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 2))) geom_sum_two) thise6:(σ 1) (p + 6) = p + 6 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp6;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 6))) geom_sum_two) thisthis:(σ 1) ((p + 8) ^ 1) = ∑ k ∈ Finset.range (1 + 1), (p + 8) ^ k := ArithmeticFunction.sigma_one_apply_prime_pow hp8⊢ (σ 1) (p + 8) = p + 8 + 1
All goals completed! 🐙
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hsum:p * (p + 8) + 12 = (p + 2) * (p + 6) :=
Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 8)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 8)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 8)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 8)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 8 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 12)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 8 + (p ^ rawCast 2 * rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 2)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf p)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 6)))
(Mathlib.Tactic.Ring.add_pf_add_gt (rawCast 6)
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 12)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right p (rawCast 1) (Mathlib.Tactic.Ring.mul_one (rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 2 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 1 * rawCast 2 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left p (rawCast 1) (Mathlib.Tactic.Ring.one_mul (rawCast 6)))
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pp_pf_overlap p
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.one_mul (rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (p ^ rawCast 1 * rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 2 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_lt (p ^ rawCast 1 * rawCast 6)
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.zero_mul (rawCast 6 + (p ^ rawCast 1 * rawCast 1 + 0)))
(Mathlib.Tactic.Ring.add_pf_add_zero (p ^ rawCast 1 * rawCast 6 + (p ^ rawCast 2 * rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (rawCast 12)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf p (rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℕ 2)
(Mathlib.Meta.NormNum.IsNat.of_raw ℕ 6) (Eq.refl 8))))
(Mathlib.Tactic.Ring.add_pf_zero_add (p ^ rawCast 2 * rawCast 1 + 0))))))hne_p_p8:p ≠ p + 8 := fun a => a_of_comesFromPrimeQuadruple._proof_1 p ahne_p2_p6:p + 2 ≠ p + 6 := fun a => a_of_comesFromPrimeQuadruple._proof_2 p ahcop1:p.Coprime (p + 8) := (coprime_primes hp hp8).mpr hne_p_p8hcop2:(p + 2).Coprime (p + 6) := (coprime_primes hp2 hp6).mpr hne_p2_p6e1:(σ 1) p = p + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one p)) geom_sum_two) thise2:(σ 1) (p + 2) = p + 2 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp2;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 2))) geom_sum_two) thise6:(σ 1) (p + 6) = p + 6 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp6;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 6))) geom_sum_two) thise8:(σ 1) (p + 8) = p + 8 + 1 :=
have this := ArithmeticFunction.sigma_one_apply_prime_pow hp8;
Eq.mp (congr (congrArg (fun x => Eq ((σ 1) x)) (pow_one (p + 8))) geom_sum_two) this⊢ (p + 2 + 1) * (p + 6 + 1) = (p + 1) * (p + 8 + 1) + 12
All goals completed! 🐙All members of the sequence A56777 come from prime quadruples.
@[category research open, AMS 11]
theorem comesFromPrimeQuadruple_of_a {n : ℕ} (h : A n) : ComesFromPrimeQuadruple n := n:ℕh:A n⊢ ComesFromPrimeQuadruple n
All goals completed! 🐙Numbers coming from prime quadruples satisfy $n \equiv 65 \pmod{72}$.
@[category textbook, AMS 11]
theorem mod_72_of_comesFromPrimeQuadruple {n : ℕ} (h : ComesFromPrimeQuadruple n) :
n % 72 = 65 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)⊢ p * (p + 8) % 72 = 65
have hp5 : 5 ≤ p := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hlt:¬5 ≤ p⊢ False; p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hlt:p < 5⊢ False
p:ℕhp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)hlt:0 < 5⊢ Falsep:ℕhp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)hlt:1 < 5⊢ Falsep:ℕhp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)hlt:2 < 5⊢ Falsep:ℕhp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)hlt:3 < 5⊢ Falsep:ℕhp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)hlt:4 < 5⊢ False p:ℕhp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)hlt:0 < 5⊢ Falsep:ℕhp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)hlt:1 < 5⊢ Falsep:ℕhp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)hlt:2 < 5⊢ Falsep:ℕhp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)hlt:3 < 5⊢ Falsep:ℕhp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)hlt:4 < 5⊢ False All goals completed! 🐙
have h2 : ¬ (2 ∣ p) := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ p⊢ False; cases hp.eq_one_or_self_of_dvd 2 hdvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ ph:2 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ ph:2 = p⊢ False All goals completed! 🐙
have h3 : ¬ (3 ∣ p) := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ p⊢ False; cases hp.eq_one_or_self_of_dvd 3 hdvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ ph:3 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ ph:3 = p⊢ False All goals completed! 🐙
have hmod2 : p % 2 = 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
have hmod3 : p % 3 = 2 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
have hne1 : p % 3 ≠ 1 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1⊢ False
have h3dvd : 3 ∣ (p + 2) := ⟨p / 3 + 1, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1⊢ p + 2 = 3 * (p / 3 + 1) All goals completed! 🐙⟩
cases hp2.eq_one_or_self_of_dvd 3 h3dvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1h3dvd:3 ∣ p + 2 := Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a)h:3 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1h3dvd:3 ∣ p + 2 := Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a)h:3 = p + 2⊢ False All goals completed! 🐙
All goals completed! 🐙
have hmod6 : p % 6 = 5 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6⊢ p * (p + 8) % 72 = 65
have hp_eq : p = 6 * q + 5 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
have hparity : 2 ∣ q * (q + 3) := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = r + r⊢ 2 ∣ q * (q + 3)p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = 2 * r + 1⊢ 2 ∣ q * (q + 3)
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = r + r⊢ 2 ∣ q * (q + 3) exact dvd_mul_of_dvd_left ⟨r, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = r + r⊢ q = 2 * r All goals completed! 🐙⟩ _
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = 2 * r + 1⊢ 2 ∣ q * (q + 3) exact dvd_mul_of_dvd_right ⟨r + 2, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ar:ℕhr:q = 2 * r + 1⊢ q + 3 = 2 * (r + 2) All goals completed! 🐙⟩ _
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ak:ℕhk:q * (q + 3) = 2 * k⊢ p * (p + 8) % 72 = 65
have h1 : p * (p + 8) = (6 * q + 5) * (6 * q + 13) := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have hne1 := fun heq =>
have h3dvd :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 h3dvd = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 h3dvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 h3dvd));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 hne1 ahmod6:p % 6 = 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_10 p h2 hmod3 aq:ℕ := p / 6hp_eq:p = 6 * q + 5 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod6 ak:ℕhk:q * (q + 3) = 2 * k⊢ p + 8 = 6 * q + 13; All goals completed! 🐙
have h2 : (6 * q + 5) * (6 * q + 13) = 36 * (q * (q + 3)) + 65 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
have h3 : 36 * (q * (q + 3)) = 72 * k := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
have hprod : p * (p + 8) = 72 * k + 65 := n:ℕh:ComesFromPrimeQuadruple n⊢ n % 72 = 65 All goals completed! 🐙
All goals completed! 🐙Numbers coming from prime quadruples satisfy $n \equiv 9 \pmod{100}$, except the first value "65".
@[category textbook, AMS 11]
theorem mod_100_of_comesFromPrimeQuadruple {n : ℕ} (h65 : 65 < n) (h : ComesFromPrimeQuadruple n) :
n % 100 = 9 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)⊢ p * (p + 8) % 100 = 9
have hp5 : 5 ≤ p := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hlt:¬5 ≤ p⊢ False; p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hlt:p < 5⊢ False
p:ℕhp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)h65:65 < 0 * (0 + 8)hlt:0 < 5⊢ Falsep:ℕhp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)h65:65 < 1 * (1 + 8)hlt:1 < 5⊢ Falsep:ℕhp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)h65:65 < 2 * (2 + 8)hlt:2 < 5⊢ Falsep:ℕhp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)h65:65 < 3 * (3 + 8)hlt:3 < 5⊢ Falsep:ℕhp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)h65:65 < 4 * (4 + 8)hlt:4 < 5⊢ False p:ℕhp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)h65:65 < 0 * (0 + 8)hlt:0 < 5⊢ Falsep:ℕhp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)h65:65 < 1 * (1 + 8)hlt:1 < 5⊢ Falsep:ℕhp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)h65:65 < 2 * (2 + 8)hlt:2 < 5⊢ Falsep:ℕhp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)h65:65 < 3 * (3 + 8)hlt:3 < 5⊢ Falsep:ℕhp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)h65:65 < 4 * (4 + 8)hlt:4 < 5⊢ False All goals completed! 🐙
have h2 : ¬ (2 ∣ p) := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ p⊢ False; cases hp.eq_one_or_self_of_dvd 2 hdvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ ph:2 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)hdvd:2 ∣ ph:2 = p⊢ False All goals completed! 🐙
have h3 : ¬ (3 ∣ p) := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ p⊢ False; cases hp.eq_one_or_self_of_dvd 3 hdvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ ph:3 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))hdvd:3 ∣ ph:3 = p⊢ False All goals completed! 🐙
have h5 : ¬ (5 ∣ p) := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hdvd:5 ∣ p⊢ False; cases hp.eq_one_or_self_of_dvd 5 hdvd with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hdvd:5 ∣ ph:5 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))hdvd:5 ∣ ph:5 = p⊢ False
-- p = 5 → p*(p+8) = 65, but 65 < n = p*(p+8) is impossible
hp:Nat.Prime 5hp2:Nat.Prime (5 + 2)hp6:Nat.Prime (5 + 6)hp8:Nat.Prime (5 + 8)h65:65 < 5 * (5 + 8)hp5:5 ≤ 5h2:¬2 ∣ 5h3:¬3 ∣ 5hdvd:5 ∣ 5⊢ False; All goals completed! 🐙
have hmod30 : p % 30 = 11 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
have hmod2 : p % 2 = 1 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 All goals completed! 🐙
have hmod3 : p % 3 = 2 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
have : p % 3 ≠ 1 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1⊢ False; have : 3 ∣ (p + 2) := ⟨p / 3 + 1, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1⊢ p + 2 = 3 * (p / 3 + 1) All goals completed! 🐙⟩
cases hp2.eq_one_or_self_of_dvd 3 this with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1this:3 ∣ p + 2 := Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a)h:3 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 aheq:p % 3 = 1this:3 ∣ p + 2 := Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a)h:3 = p + 2⊢ False All goals completed! 🐙
All goals completed! 🐙
have hmod5 : p % 5 = 1 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
have hne2 : p % 5 ≠ 2 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this aheq:p % 5 = 2⊢ False; have : 5 ∣ (p + 8) := ⟨p / 5 + 2, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this aheq:p % 5 = 2⊢ p + 8 = 5 * (p / 5 + 2) All goals completed! 🐙⟩
cases hp8.eq_one_or_self_of_dvd 5 this with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this aheq:p % 5 = 2this:5 ∣ p + 8 :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a)h:5 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this aheq:p % 5 = 2this:5 ∣ p + 8 :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a)h:5 = p + 8⊢ False All goals completed! 🐙
have hne3 : p % 5 ≠ 3 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))heq:p % 5 = 3⊢ False; have : 5 ∣ (p + 2) := ⟨p / 5 + 1, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))heq:p % 5 = 3⊢ p + 2 = 5 * (p / 5 + 1) All goals completed! 🐙⟩
cases hp2.eq_one_or_self_of_dvd 5 this with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))heq:p % 5 = 3this:5 ∣ p + 2 :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a)h:5 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))heq:p % 5 = 3this:5 ∣ p + 2 :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a)h:5 = p + 2⊢ False All goals completed! 🐙
have hne4 : p % 5 ≠ 4 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))hne3:p % 5 ≠ 3 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this))heq:p % 5 = 4⊢ False; have : 5 ∣ (p + 6) := ⟨p / 5 + 2, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))hne3:p % 5 ≠ 3 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this))heq:p % 5 = 4⊢ p + 6 = 5 * (p / 5 + 2) All goals completed! 🐙⟩
cases hp6.eq_one_or_self_of_dvd 5 this with p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))hne3:p % 5 ≠ 3 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this))heq:p % 5 = 4this:5 ∣ p + 6 :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a)h:5 = 1⊢ False All goals completed! 🐙 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod2:p % 2 = 1 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 ahmod3:p % 3 = 2 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1) (Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this ahne2:p % 5 ≠ 2 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this))hne3:p % 5 ≠ 3 :=
fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this))heq:p % 5 = 4this:5 ∣ p + 6 :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a)h:5 = p + 6⊢ False All goals completed! 🐙
All goals completed! 🐙
All goals completed! 🐙
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30⊢ p * (p + 8) % 100 = 9
have hp_eq : p = 30 * q + 11 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 All goals completed! 🐙
-- p*(p+8) = (30q+11)(30q+19) = 900*q*(q+1) + 30*(11+19)*q + 209
-- = 900*q*(q+1) + 900*q + 209 ... let me just compute with ring
have hparity : 2 ∣ q * (q + 1) := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = r + r⊢ 2 ∣ q * (q + 1)p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = 2 * r + 1⊢ 2 ∣ q * (q + 1)
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = r + r⊢ 2 ∣ q * (q + 1) exact dvd_mul_of_dvd_left ⟨r, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = r + r⊢ q = 2 * r All goals completed! 🐙⟩ _
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = 2 * r + 1⊢ 2 ∣ q * (q + 1) exact dvd_mul_of_dvd_right ⟨r + 1, p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ar:ℕhr:q = 2 * r + 1⊢ q + 1 = 2 * (r + 1) All goals completed! 🐙⟩ _
p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ak:ℕhk:q * (q + 1) = 2 * k⊢ p * (p + 8) % 100 = 9
have h1 : p * (p + 8) = (30 * q + 11) * (30 * q + 19) := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 p:ℕhp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)h65:65 < p * (p + 8)hp5:5 ≤ p :=
Decidable.byContradiction fun hlt =>
if x : 2 ≤ p then
if x : 3 ≤ p then
if x : 4 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm
(le_antisymm
(ge_of_not_lt
(Mathlib.Tactic.IntervalCases.of_lt_right (Eq.mp not_le._simp_1 hlt)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 5)))))
x))
hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp6))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp2))
(Eq.symm (le_antisymm (ge_of_not_lt x) x)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
if x_1 : 1 ≤ p then
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x) x_1)) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)
else
Eq.ndrec (motive := fun x =>
Nat.Prime x → Nat.Prime (x + 2) → Nat.Prime (x + 6) → Nat.Prime (x + 8) → 65 < x * (x + 8) → x < 5 → False)
(fun hp hp2 hp6 hp8 h65 hlt => False.elim (Eq.mp (eq_false_of_decide (Eq.refl false)) hp))
(Eq.symm (le_antisymm (ge_of_not_lt x_1) (Nat.zero_le p))) hp hp2 hp6 hp8 h65 (Eq.mp not_le._simp_1 hlt)h2:¬2 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 2 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 2 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_2 p hp5 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 2 hdvd))h3:¬3 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 3 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 3 hdvd) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_3 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_4 p hp5 h2 hdvd h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 3 hdvd))h5:¬5 ∣ p :=
fun hdvd =>
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp 5 hdvd = t → False)
(Prime.eq_one_or_self_of_dvd hp 5 hdvd) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_1 p h)
(fun h h_1 =>
Eq.ndrec (motive := fun p =>
Nat.Prime p →
Nat.Prime (p + 2) →
Nat.Prime (p + 6) → Nat.Prime (p + 8) → 65 < p * (p + 8) → 5 ≤ p → ¬2 ∣ p → ¬3 ∣ p → 5 ∣ p → False)
(fun hp hp2 hp6 hp8 h65 hp5 h2 h3 hdvd => mod_100_of_comesFromPrimeQuadruple._proof_2 h65) h hp hp2 hp6 hp8 h65
hp5 h2 h3 hdvd)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp 5 hdvd))hmod30:p % 30 = 11 :=
have hmod2 := Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_5 p h2 a;
have hmod3 :=
have this := fun heq =>
have this :=
Exists.intro (p / 3 + 1)
(Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_6 p h2 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 3 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 3 this) (fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_7 p h)
(fun h h_1 => mod_72_of_comesFromPrimeQuadruple._proof_8 p hp5 h2 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 3 this));
Decidable.byContradiction fun a => mod_72_of_comesFromPrimeQuadruple._proof_9 p h2 h3 this a;
have hmod5 :=
have hne2 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_3 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp8 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp8 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_5 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp8 5 this));
have hne3 := fun heq =>
have this :=
Exists.intro (p / 5 + 1)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_6 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp2 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp2 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_7 p h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp2 5 this));
have hne4 := fun heq =>
have this :=
Exists.intro (p / 5 + 2)
(Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_8 p h2 hmod3 heq a);
Or.casesOn (motive := fun t => Prime.eq_one_or_self_of_dvd hp6 5 this = t → False)
(Prime.eq_one_or_self_of_dvd hp6 5 this) (fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_4 p h)
(fun h h_1 => mod_100_of_comesFromPrimeQuadruple._proof_9 p hp5 h2 hmod3 heq h)
(Eq.refl (Prime.eq_one_or_self_of_dvd hp6 5 this));
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_10 p h2 h5 hmod3 hne2 hne3 hne4 a;
Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_11 p h2 hmod3 hmod5 aq:ℕ := p / 30hp_eq:p = 30 * q + 11 := Decidable.byContradiction fun a => mod_100_of_comesFromPrimeQuadruple._proof_12 p h2 hmod30 ak:ℕhk:q * (q + 1) = 2 * k⊢ p + 8 = 30 * q + 19; All goals completed! 🐙
have h2 : (30 * q + 11) * (30 * q + 19) = 900 * (q * (q + 1)) + 209 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 All goals completed! 🐙
have h3 : 900 * (q * (q + 1)) = 1800 * k := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 All goals completed! 🐙
have hprod : p * (p + 8) = 1800 * k + 209 := n:ℕh65:65 < nh:ComesFromPrimeQuadruple n⊢ n % 100 = 9 All goals completed! 🐙
All goals completed! 🐙
end OeisA56777