/- 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 FormalConjecturesUtil

Conjectures 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.

Reference: A56777

namespace OeisA56777 open Natopen scoped ArithmeticFunction.sigma

A 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 + 12

A 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 nA 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 nA n All goals completed! 🐙 -- coprimality facts between the four primes have hne_p_p8 : p p + 8 := n:h:ComesFromPrimeQuadruple nA n All goals completed! 🐙 have hne_p2_p6 : p + 2 p + 6 := n:h:ComesFromPrimeQuadruple nA 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_p8A (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_p6A (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_p61 < 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_p6p + 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 hp8p + 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_p61 < 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 hp1 < p * (p + 8) have h2 : 10 p + 8 := n:h:ComesFromPrimeQuadruple nA 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 nA n All goals completed! 🐙, show 1 p + 6 n:h:ComesFromPrimeQuadruple nA n All goals completed! 🐙, show 1 p + 8 n:h:ComesFromPrimeQuadruple nA 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 nA 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 nA 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 nA 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 nA 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 declaration uses 'sorry'comesFromPrimeQuadruple_of_a {n : } (h : A n) : ComesFromPrimeQuadruple n := n:h:A nComesFromPrimeQuadruple 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 nn % 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 nn % 72 = 65 p:hp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hlt:¬5 pFalse; p:hp:Nat.Prime php2:Nat.Prime (p + 2)hp6:Nat.Prime (p + 6)hp8:Nat.Prime (p + 8)hlt:p < 5False p:hp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)hlt:0 < 5Falsep:hp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)hlt:1 < 5Falsep:hp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)hlt:2 < 5Falsep:hp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)hlt:3 < 5Falsep:hp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)hlt:4 < 5False p:hp:Nat.Prime 0hp2:Nat.Prime (0 + 2)hp6:Nat.Prime (0 + 6)hp8:Nat.Prime (0 + 8)hlt:0 < 5Falsep:hp:Nat.Prime 1hp2:Nat.Prime (1 + 2)hp6:Nat.Prime (1 + 6)hp8:Nat.Prime (1 + 8)hlt:1 < 5Falsep:hp:Nat.Prime 2hp2:Nat.Prime (2 + 2)hp6:Nat.Prime (2 + 6)hp8:Nat.Prime (2 + 8)hlt:2 < 5Falsep:hp:Nat.Prime 3hp2:Nat.Prime (3 + 2)hp6:Nat.Prime (3 + 6)hp8:Nat.Prime (3 + 8)hlt:3 < 5Falsep:hp:Nat.Prime 4hp2:Nat.Prime (4 + 2)hp6:Nat.Prime (4 + 6)hp8:Nat.Prime (4 + 8)hlt:4 < 5False All goals completed! 🐙 have h2 : ¬ (2 p) := n:h:ComesFromPrimeQuadruple nn % 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 pFalse; 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 = 1False 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 = pFalse All goals completed! 🐙 have h3 : ¬ (3 p) := n:h:ComesFromPrimeQuadruple nn % 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 pFalse; 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 = 1False 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 = pFalse All goals completed! 🐙 have hmod2 : p % 2 = 1 := n:h:ComesFromPrimeQuadruple nn % 72 = 65 All goals completed! 🐙 have hmod3 : p % 3 = 2 := n:h:ComesFromPrimeQuadruple nn % 72 = 65 have hne1 : p % 3 1 := n:h:ComesFromPrimeQuadruple nn % 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 = 1False 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 = 1p + 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 = 1False 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 + 2False All goals completed! 🐙 All goals completed! 🐙 have hmod6 : p % 6 = 5 := n:h:ComesFromPrimeQuadruple nn % 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 / 6p * (p + 8) % 72 = 65 have hp_eq : p = 6 * q + 5 := n:h:ComesFromPrimeQuadruple nn % 72 = 65 All goals completed! 🐙 have hparity : 2 q * (q + 3) := n:h:ComesFromPrimeQuadruple nn % 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 + r2 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 + 12 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 + r2 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 + rq = 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 + 12 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 + 1q + 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 * kp * (p + 8) % 72 = 65 have h1 : p * (p + 8) = (6 * q + 5) * (6 * q + 13) := n:h:ComesFromPrimeQuadruple nn % 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 * kp + 8 = 6 * q + 13; All goals completed! 🐙 have h2 : (6 * q + 5) * (6 * q + 13) = 36 * (q * (q + 3)) + 65 := n:h:ComesFromPrimeQuadruple nn % 72 = 65 All goals completed! 🐙 have h3 : 36 * (q * (q + 3)) = 72 * k := n:h:ComesFromPrimeQuadruple nn % 72 = 65 All goals completed! 🐙 have hprod : p * (p + 8) = 72 * k + 65 := n:h:ComesFromPrimeQuadruple nn % 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 nn % 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 nn % 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 pFalse; 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 < 5False 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 < 5Falsep: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 < 5Falsep: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 < 5Falsep: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 < 5Falsep: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 < 5False 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 < 5Falsep: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 < 5Falsep: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 < 5Falsep: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 < 5Falsep: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 < 5False All goals completed! 🐙 have h2 : ¬ (2 p) := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 pFalse; 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 = 1False 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 = pFalse All goals completed! 🐙 have h3 : ¬ (3 p) := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 pFalse; 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 = 1False 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 = pFalse All goals completed! 🐙 have h5 : ¬ (5 p) := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 pFalse; 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 = 1False 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 = pFalse -- 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 5False; All goals completed! 🐙 have hmod30 : p % 30 = 11 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 have hmod2 : p % 2 = 1 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 All goals completed! 🐙 have hmod3 : p % 3 = 2 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 have : p % 3 1 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 = 1False; 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 = 1p + 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 = 1False 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 + 2False All goals completed! 🐙 All goals completed! 🐙 have hmod5 : p % 5 = 1 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 have hne2 : p % 5 2 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 = 2False; 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 = 2p + 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 = 1False 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 + 8False All goals completed! 🐙 have hne3 : p % 5 3 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 = 3False; 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 = 3p + 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 = 1False 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 + 2False All goals completed! 🐙 have hne4 : p % 5 4 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 = 4False; 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 = 4p + 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 = 1False 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 + 6False 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 / 30p * (p + 8) % 100 = 9 have hp_eq : p = 30 * q + 11 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 nn % 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 + r2 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 + 12 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 + r2 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 + rq = 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 + 12 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 + 1q + 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 * kp * (p + 8) % 100 = 9 have h1 : p * (p + 8) = (30 * q + 11) * (30 * q + 19) := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 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 * kp + 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 nn % 100 = 9 All goals completed! 🐙 have h3 : 900 * (q * (q + 1)) = 1800 * k := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 All goals completed! 🐙 have hprod : p * (p + 8) = 1800 * k + 209 := n:h65:65 < nh:ComesFromPrimeQuadruple nn % 100 = 9 All goals completed! 🐙 All goals completed! 🐙 end OeisA56777