Theorem: FermatLastTheoremForThreeGen.lambda_sq_dvd_or_dvd_or_dvd
File: Mathlib/NumberTheory/FLT/Three.lean

tactic: by_contra! 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
⊢ λ ^ 2 ∣ S'.a + S'.b ∨ λ ^ 2 ∣ S'.a + ↑η * S'.b ∨ λ ^ 2 ∣ S'.a + ↑η ^ 2 * 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 : ¬λ ^ 2 ∣ S'.a + S'.b ∧ ¬λ ^ 2 ∣ S'.a + ↑η * S'.b ∧ ¬λ ^ 2 ∣ S'.a + ↑η ^ 2 * S'.b
⊢ False

tactic: rcases h with ⟨h1, h2, h3⟩
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 : ¬λ ^ 2 ∣ S'.a + S'.b ∧ ¬λ ^ 2 ∣ S'.a + ↑η * S'.b ∧ ¬λ ^ 2 ∣ S'.a + ↑η ^ 2 * S'.b
⊢ False
state_after: case intro.intro
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
h1 : ¬λ ^ 2 ∣ S'.a + S'.b
h2 : ¬λ ^ 2 ∣ S'.a + ↑η * S'.b
h3 : ¬λ ^ 2 ∣ S'.a + ↑η ^ 2 * S'.b
⊢ False

tactic: rw [← multiplicity.multiplicity_lt_iff_not_dvd] at h1 h2 h3
state_before: case intro.intro
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
h1 : ¬λ ^ 2 ∣ S'.a + S'.b
h2 : ¬λ ^ 2 ∣ S'.a + ↑η * S'.b
h3 : ¬λ ^ 2 ∣ S'.a + ↑η ^ 2 * S'.b
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
⊢ False

tactic: have h1' : multiplicity.Finite (hζ.toInteger - 1) (S'.a + S'.b) :=
  multiplicity.ne_top_iff_finite.1 (fun ht ↦ by simp [ht] at h1)
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
⊢ False

tactic: have h2' : multiplicity.Finite (hζ.toInteger - 1) (S'.a + η * S'.b) := by
  refine multiplicity.ne_top_iff_finite.1 (fun ht ↦ ?_)
  rw [coe_eta] at ht
  simp [ht] at h2
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
⊢ False

tactic: have h3' : multiplicity.Finite (hζ.toInteger - 1) (S'.a + η ^ 2 * S'.b) := by
  refine multiplicity.ne_top_iff_finite.1 (fun ht ↦ ?_)
  rw [coe_eta] at ht
  simp [ht] at h3
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False

tactic: replace h1' : (multiplicity (hζ.toInteger - 1) (S'.a + S'.b)).get h1' =
  multiplicity (hζ.toInteger - 1) (S'.a + S'.b) := by simp
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
⊢ False

tactic: replace h2' : (multiplicity (hζ.toInteger - 1) (S'.a + η * S'.b)).get h2' =
  multiplicity (hζ.toInteger - 1) (S'.a + η * S'.b) := by simp
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
⊢ False

tactic: replace h3' : (multiplicity (hζ.toInteger - 1) (S'.a + η ^ 2 * S'.b)).get h3' =
  multiplicity (hζ.toInteger - 1) (S'.a + η ^ 2 * S'.b) := by simp
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
⊢ False
state_after: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False

tactic: rw [← h1', coe_lt_coe] at h1
state_before: case intro.intro
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False
state_after: case intro.intro
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
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False

tactic: rw [← h2', coe_lt_coe] at h2
state_before: case intro.intro
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
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False
state_after: case intro.intro
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
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False

tactic: rw [← h3', coe_lt_coe] at h3
state_before: case intro.intro
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
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False
state_after: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False

tactic: have := (pow_dvd_pow_of_dvd (lambda_sq_dvd_c S') 3).mul_left S'.u
state_before: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
⊢ False
state_after: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
this : (λ ^ 2) ^ 3 ∣ ↑S'.u * S'.c ^ 3
⊢ False

tactic: rw [← pow_mul, ← S'.H, a_cube_add_b_cube_eq_mul, multiplicity.pow_dvd_iff_le_multiplicity,
  multiplicity.mul hζ.zeta_sub_one_prime', multiplicity.mul hζ.zeta_sub_one_prime', ← h1', ← h2',
  ← h3', ← Nat.cast_add, ← Nat.cast_add, coe_le_coe] at this
state_before: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
this : (λ ^ 2) ^ 3 ∣ ↑S'.u * S'.c ^ 3
⊢ False
state_after: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
this :
  2 * 3 ≤
    (multiplicity λ (S'.a + S'.b)).get h1'✝ + (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ +
      (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝
⊢ False

tactic: omega
state_before: case intro.intro
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
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h1 : (multiplicity λ (S'.a + S'.b)).get h1'✝ < 2
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h2 : (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ < 2
h3'✝ : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h3 : (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝ < 2
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
h3' : ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝) = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
this :
  2 * 3 ≤
    (multiplicity λ (S'.a + S'.b)).get h1'✝ + (multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝ +
      (multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3'✝
⊢ False
state_after: no goals

tactic: simp [ht] at h1
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
ht : multiplicity λ (S'.a + S'.b) = ⊤
⊢ False
state_after: no goals

tactic: refine multiplicity.ne_top_iff_finite.1 (fun ht ↦ ?_)
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
⊢ multiplicity.Finite λ (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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
ht : multiplicity λ (S'.a + ↑η * S'.b) = ⊤
⊢ False

tactic: rw [coe_eta] at ht
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
ht : multiplicity λ (S'.a + ↑η * S'.b) = ⊤
⊢ False
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
ht : multiplicity λ (S'.a + hζ.toInteger * S'.b) = ⊤
⊢ False

tactic: simp [ht] at h2
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
ht : multiplicity λ (S'.a + hζ.toInteger * S'.b) = ⊤
⊢ False
state_after: no goals

tactic: refine multiplicity.ne_top_iff_finite.1 (fun ht ↦ ?_)
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
⊢ multiplicity.Finite λ (S'.a + ↑η ^ 2 * 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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
ht : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) = ⊤
⊢ False

tactic: rw [coe_eta] at ht
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
ht : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) = ⊤
⊢ False
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
ht : multiplicity λ (S'.a + hζ.toInteger ^ 2 * S'.b) = ⊤
⊢ False

tactic: simp [ht] at h3
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
ht : multiplicity λ (S'.a + hζ.toInteger ^ 2 * S'.b) = ⊤
⊢ False
state_after: no goals

tactic: simp
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1' : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
⊢ ↑((multiplicity λ (S'.a + S'.b)).get h1') = multiplicity λ (S'.a + S'.b)
state_after: no goals

tactic: simp
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2' : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
⊢ ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2') = multiplicity λ (S'.a + ↑η * S'.b)
state_after: no goals

tactic: simp
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
h1 : multiplicity λ (S'.a + S'.b) < ↑2
h2 : multiplicity λ (S'.a + ↑η * S'.b) < ↑2
h3 : multiplicity λ (S'.a + ↑η ^ 2 * S'.b) < ↑2
h1'✝ : multiplicity.Finite λ (S'.a + S'.b)
h2'✝ : multiplicity.Finite λ (S'.a + ↑η * S'.b)
h3' : multiplicity.Finite λ (S'.a + ↑η ^ 2 * S'.b)
h1' : ↑((multiplicity λ (S'.a + S'.b)).get h1'✝) = multiplicity λ (S'.a + S'.b)
h2' : ↑((multiplicity λ (S'.a + ↑η * S'.b)).get h2'✝) = multiplicity λ (S'.a + ↑η * S'.b)
⊢ ↑((multiplicity λ (S'.a + ↑η ^ 2 * S'.b)).get h3') = multiplicity λ (S'.a + ↑η ^ 2 * S'.b)
state_after: no goals