Theorem: _private.Mathlib.NumberTheory.FLT.Three.0.FermatLastTheoremForThreeGen.Solution.lambda_pow_dvd_a_add_b
File: Mathlib/NumberTheory/FLT/Three.lean

Proof steps:
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h : λ ^ S.multiplicity ∣ S.c
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
tactic: have h : λ ^ S.multiplicity ∣ S.c := multiplicity.pow_multiplicity_dvd _
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h : λ ^ S.multiplicity ∣ S.c
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h : (λ ^ S.multiplicity) ^ 3 ∣ ↑S.u * S.c ^ 3
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
tactic: replace h : (λ ^ multiplicity S) ^ 3 ∣ S.u * S.c ^ 3 := by simp [h]
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h : (λ ^ S.multiplicity) ^ 3 ∣ ↑S.u * S.c ^ 3
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
tactic: rw [← S.H, a_cube_add_b_cube_eq_mul, ← pow_mul, mul_comm, y_spec, z_spec] at h
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣ S.a + S.b
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣ FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b)
tactic: apply hζ.zeta_sub_one_prime'.pow_dvd_of_dvd_mul_left _ S.lambda_not_dvd_z
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣ FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b)
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
tactic: apply hζ.zeta_sub_one_prime'.pow_dvd_of_dvd_mul_left _ S.lambda_not_dvd_y
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
this : 2 ≤ S.multiplicity
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
tactic: have := S.two_le_multiplicity
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity) ∣
    (S.a + S.b) * (λ * FermatLastTheoremForThreeGen.Solution.y S) * (λ * FermatLastTheoremForThreeGen.Solution.z S)
this : 2 ≤ S.multiplicity
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity - 2) * λ * λ ∣
    (S.a + S.b) * FermatLastTheoremForThreeGen.Solution.y S * FermatLastTheoremForThreeGen.Solution.z S * λ * λ
this : 2 ≤ S.multiplicity
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
tactic: rw [show 3 * multiplicity S = 3 * multiplicity S - 2 + 1 + 1 by omega, pow_succ, pow_succ,
    show (S.a + S.b) * (λ * y S) * (λ * z S) = (S.a + S.b) * y S * z S * λ * λ by ring] at h
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
h :
  λ ^ (3 * S.multiplicity - 2) * λ * λ ∣
    (S.a + S.b) * FermatLastTheoremForThreeGen.Solution.y S * FermatLastTheoremForThreeGen.Solution.z S * λ * λ
this : 2 ≤ S.multiplicity
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
this : 2 ≤ S.multiplicity
h :
  λ ^ (3 * S.multiplicity - 2) ∣
    (S.a + S.b) * FermatLastTheoremForThreeGen.Solution.y S * FermatLastTheoremForThreeGen.Solution.z S
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
tactic: simp only [mul_dvd_mul_iff_right hζ.zeta_sub_one_prime'.ne_zero] at h
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {3} ℚ K
ζ : K
hζ : IsPrimitiveRoot ζ ↑3
S : Solution hζ
S' : Solution' hζ
inst✝ : DecidableRel fun a b => a ∣ b
this : 2 ≤ S.multiplicity
h :
  λ ^ (3 * S.multiplicity - 2) ∣
    (S.a + S.b) * FermatLastTheoremForThreeGen.Solution.y S * FermatLastTheoremForThreeGen.Solution.z S
⊢ λ ^ (3 * S.multiplicity - 2) ∣
    FermatLastTheoremForThreeGen.Solution.y S * (FermatLastTheoremForThreeGen.Solution.z S * (S.a + S.b))
state_after: no goals
tactic: rwa [show (S.a + S.b) * y S * z S = y S * (z S * (S.a + S.b)) by ring] at h