diff --git a/FltRegular/CaseI/Statement.lean b/FltRegular/CaseI/Statement.lean index e22d603a..82e354a2 100644 --- a/FltRegular/CaseI/Statement.lean +++ b/FltRegular/CaseI/Statement.lean @@ -3,6 +3,7 @@ import FltRegular.NumberTheory.Cyclotomic.Factoring import FltRegular.NumberTheory.Cyclotomic.CaseI import FltRegular.CaseI.AuxLemmas import FltRegular.NumberTheory.RegularPrimes +import Mathlib.NumberTheory.FLT.Three open Finset Nat IsCyclotomicExtension Ideal Polynomial Int Basis FltRegular.CaseI @@ -43,13 +44,13 @@ theorem may_assume : SlightlyEasier → Statement := by have : p ∈ Finset.Ioo 2 5 := (Finset.mem_Ioo).2 ⟨Nat.lt_of_le_of_ne hpri.out.two_le hodd.symm, by linarith⟩ fin_cases this - · exact MayAssume.p_ne_three hprod H rfl + · exact fermatLastTheoremFor_iff_int.1 fermatLastTheoremThree a b c + (fun ha ↦ hprod <| by simp [ha]) (fun hb ↦ hprod <| by simp [hb]) + (fun hc ↦ hprod <| by simp [hc]) H · rw [show 2 + 1 + 1 = 2 * 2 from rfl] at hpri exact Nat.not_prime_mul one_lt_two.ne' one_lt_two.ne' hpri.out - rcases MayAssume.coprime H hprod with ⟨Hxyz, hunit, hprodxyx⟩ let d := ({a, b, c} : Finset ℤ).gcd id - have hdiv : ¬↑p ∣ a / d * (b / d) * (c / d) := - by + have hdiv : ¬↑p ∣ a / d * (b / d) * (c / d) := by have hadiv : d ∣ a := gcd_dvd (by simp) have hbdiv : d ∣ b := gcd_dvd (by simp) have hcdiv : d ∣ c := gcd_dvd (by simp) @@ -59,6 +60,7 @@ theorem may_assume : SlightlyEasier → Statement := by mul_assoc (b / d), ← mul_assoc _ (b / d), Int.mul_ediv_cancel' hbdiv, mul_comm, mul_assoc, mul_assoc, Int.ediv_mul_cancel hcdiv, mul_comm, mul_assoc, mul_comm c, ← mul_assoc] at hdiv exact hI hdiv + rcases MayAssume.coprime H hprod with ⟨Hxyz, hunit, hprodxyx⟩ obtain ⟨X, Y, Z, H1, H2, H3, _, H5⟩ := a_not_cong_b hpri.out hp5 hprodxyx Hxyz hunit hdiv exact Heasy hreg hp5 H2 H3 (fun hfin => H5 hfin) H1 diff --git a/FltRegular/MayAssume/Lemmas.lean b/FltRegular/MayAssume/Lemmas.lean index 2f057dc4..3fba4b9a 100644 --- a/FltRegular/MayAssume/Lemmas.lean +++ b/FltRegular/MayAssume/Lemmas.lean @@ -1,6 +1,6 @@ -import Mathlib.NumberTheory.FLT.Three import Mathlib.Algebra.GCDMonoid.Finset import Mathlib.FieldTheory.Finite.Basic +import Mathlib.Analysis.Normed.Field.Lemmas open Int Finset @@ -8,14 +8,6 @@ namespace FltRegular namespace MayAssume -theorem p_ne_three {a b c : ℤ} {n : ℕ} (hprod : a * b * c ≠ 0) (h : a ^ n + b ^ n = c ^ n) : - n ≠ 3 := by - intro hn - have ha : a ≠ 0 := fun ha => by simp [ha] at hprod - have hb : b ≠ 0 := fun hb => by simp [hb] at hprod - have hc : c ≠ 0 := fun hc => by simp [hc] at hprod - exact fermatLastTheoremFor_iff_int.1 fermatLastTheoremThree a b c ha hb hc (hn ▸ h) - theorem coprime {a b c : ℤ} {n : ℕ} (H : a ^ n + b ^ n = c ^ n) (hprod : a * b * c ≠ 0) : let d := ({a, b, c} : Finset ℤ).gcd id (a / d) ^ n + (b / d) ^ n = (c / d) ^ n ∧