ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- FirstOrder.Language.Term.constantsVarsEquivLeft_symm_apply
@[simp]
theorem constantsVarsEquivLeft_symm_apply (t : L.Term ((γ ⊕ α) ⊕ β)) :
    constantsVarsEquivLeft.symm t = varsToConstants (t.relabel (Equiv.sumAssoc _ _ _)) 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {γ : Type u_3} (t : L.Term ((γ ⊕ α) ⊕ β))
Goal: FirstOrder.Language.Term.constantsVarsEquivLeft.symm t =
  (FirstOrder.Language.Term.relabel (⇑(Equiv.sumAssoc γ α β)) t).varsToConstants
-- FirstOrder.Language.LHom.id_onTerm
@[simp]
theorem id_onTerm : ((LHom.id L).onTerm : L.Term α → L.Term α) = id 
Arguments: {L : FirstOrder.Language} {α : Type u'}
Goal: (FirstOrder.Language.LHom.id L).onTerm = id
-- FirstOrder.Language.LHom.comp_onTerm
@[simp]
theorem comp_onTerm {L'' : Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L') :
    ((φ.comp ψ).onTerm : L.Term α → L''.Term α) = φ.onTerm ∘ ψ.onTerm 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {L'' : FirstOrder.Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L')
Goal: (φ.comp ψ).onTerm = φ.onTerm ∘ ψ.onTerm
-- FirstOrder.Language.Lequiv.onTerm_apply
@[simps]
def Lequiv.onTerm (φ : L ≃ᴸ L') : L.Term α ≃ L'.Term α 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} (φ : L ≃ᴸ L')
Goal: ∀ (a : L.Term α), (FirstOrder.Language.Lequiv.onTerm φ) a = φ.toLHom.onTerm a
-- FirstOrder.Language.Lequiv.onTerm_symm_apply
@[simps]
def Lequiv.onTerm (φ : L ≃ᴸ L') : L.Term α ≃ L'.Term α 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} (φ : L ≃ᴸ L')
Goal: ∀ (a : L'.Term α), (FirstOrder.Language.Lequiv.onTerm φ).symm a = φ.invLHom.onTerm a
-- FirstOrder.Language.BoundedFormula.castLE_rfl
@[simp]
theorem castLE_rfl {n} (h : n ≤ n) (φ : L.BoundedFormula α n) : φ.castLE h = φ 
Arguments: {L : FirstOrder.Language} {α : Type u'} {n : ℕ} (h : n ≤ n) (φ : L.BoundedFormula α n)
Goal: FirstOrder.Language.BoundedFormula.castLE h φ = φ
-- FirstOrder.Language.BoundedFormula.castLE_castLE
@[simp]
theorem castLE_castLE {k m n} (km : k ≤ m) (mn : m ≤ n) (φ : L.BoundedFormula α k) :
    (φ.castLE km).castLE mn = φ.castLE (km.trans mn) 
Arguments: {L : FirstOrder.Language} {α : Type u'} {k m n : ℕ} (km : k ≤ m) (mn : m ≤ n) (φ : L.BoundedFormula α k)
Goal: FirstOrder.Language.BoundedFormula.castLE mn (FirstOrder.Language.BoundedFormula.castLE km φ) =
  FirstOrder.Language.BoundedFormula.castLE ⋯ φ
-- FirstOrder.Language.BoundedFormula.castLE_comp_castLE
@[simp]
theorem castLE_comp_castLE {k m n} (km : k ≤ m) (mn : m ≤ n) :
    (BoundedFormula.castLE mn ∘ BoundedFormula.castLE km :
        L.BoundedFormula α k → L.BoundedFormula α n) =
      BoundedFormula.castLE (km.trans mn) 
Arguments: {L : FirstOrder.Language} {α : Type u'} {k m n : ℕ} (km : k ≤ m) (mn : m ≤ n)
Goal: FirstOrder.Language.BoundedFormula.castLE mn ∘ FirstOrder.Language.BoundedFormula.castLE km =
  FirstOrder.Language.BoundedFormula.castLE ⋯
-- FirstOrder.Language.BoundedFormula.mapTermRel_mapTermRel
@[simp]
theorem mapTermRel_mapTermRel {L'' : Language}
    (ft : ∀ n, L.Term (α ⊕ (Fin n)) → L'.Term (β ⊕ (Fin n)))
    (fr : ∀ n, L.Relations n → L'.Relations n)
    (ft' : ∀ n, L'.Term (β ⊕ Fin n) → L''.Term (γ ⊕ (Fin n)))
    (fr' : ∀ n, L'.Relations n → L''.Relations n) {n} (φ : L.BoundedFormula α n) :
    ((φ.mapTermRel ft fr fun _ => id).mapTermRel ft' fr' fun _ => id) =
      φ.mapTermRel (fun _ => ft' _ ∘ ft _) (fun _ => fr' _ ∘ fr _) fun _ => id 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {β : Type v'} {γ : Type u_3} {L'' : FirstOrder.Language} (ft : (n : ℕ) → L.Term (α ⊕ Fin n) → L'.Term (β ⊕ Fin n)) (fr : (n : ℕ) → L.Relations n → L'.Relations n) (ft' : (n : ℕ) → L'.Term (β ⊕ Fin n) → L''.Term (γ ⊕ Fin n)) (fr' : (n : ℕ) → L'.Relations n → L''.Relations n) {n : ℕ} (φ : L.BoundedFormula α n)
Goal: FirstOrder.Language.BoundedFormula.mapTermRel ft' fr' (fun x => id)
    (FirstOrder.Language.BoundedFormula.mapTermRel ft fr (fun x => id) φ) =
  FirstOrder.Language.BoundedFormula.mapTermRel (fun x => ft' x ∘ ft x) (fun x => fr' x ∘ fr x) (fun x => id) φ
-- FirstOrder.Language.BoundedFormula.mapTermRel_id_id_id
@[simp]
theorem mapTermRel_id_id_id {n} (φ : L.BoundedFormula α n) :
    (φ.mapTermRel (fun _ => id) (fun _ => id) fun _ => id) = φ 
Arguments: {L : FirstOrder.Language} {α : Type u'} {n : ℕ} (φ : L.BoundedFormula α n)
Goal: FirstOrder.Language.BoundedFormula.mapTermRel (fun x => id) (fun x => id) (fun x => id) φ = φ
-- FirstOrder.Language.BoundedFormula.mapTermRelEquiv_symm_apply
@[simps]
def mapTermRelEquiv (ft : ∀ n, L.Term (α ⊕ (Fin n)) ≃ L'.Term (β ⊕ (Fin n)))
    (fr : ∀ n, L.Relations n ≃ L'.Relations n) {n} : L.BoundedFormula α n ≃ L'.BoundedFormula β n 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {β : Type v'} (ft : (n : ℕ) → L.Term (α ⊕ Fin n) ≃ L'.Term (β ⊕ Fin n)) (fr : (n : ℕ) → L.Relations n ≃ L'.Relations n) {n : ℕ}
Goal: ∀ (a : L'.BoundedFormula β n),
  (FirstOrder.Language.BoundedFormula.mapTermRelEquiv ft fr).symm a =
    FirstOrder.Language.BoundedFormula.mapTermRel (fun n => ⇑(ft n).symm) (fun n => ⇑(fr n).symm) (fun x => id) a
-- FirstOrder.Language.BoundedFormula.mapTermRelEquiv_apply
@[simps]
def mapTermRelEquiv (ft : ∀ n, L.Term (α ⊕ (Fin n)) ≃ L'.Term (β ⊕ (Fin n)))
    (fr : ∀ n, L.Relations n ≃ L'.Relations n) {n} : L.BoundedFormula α n ≃ L'.BoundedFormula β n 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {β : Type v'} (ft : (n : ℕ) → L.Term (α ⊕ Fin n) ≃ L'.Term (β ⊕ Fin n)) (fr : (n : ℕ) → L.Relations n ≃ L'.Relations n) {n : ℕ}
Goal: ∀ (a : L.BoundedFormula α n),
  (FirstOrder.Language.BoundedFormula.mapTermRelEquiv ft fr) a =
    FirstOrder.Language.BoundedFormula.mapTermRel (fun n => ⇑(ft n)) (fun n => ⇑(fr n)) (fun x => id) a
-- FirstOrder.Language.BoundedFormula.sum_elim_comp_relabelAux
@[simp]
theorem sum_elim_comp_relabelAux {m : ℕ} {g : α → β ⊕ (Fin n)} {v : β → M}
    {xs : Fin (n + m) → M} : Sum.elim v xs ∘ relabelAux g m =
    Sum.elim (Sum.elim v (xs ∘ castAdd m) ∘ g) (xs ∘ natAdd n) 
Arguments: {M : Type w} {α : Type u'} {β : Type v'} {n m : ℕ} {g : α → β ⊕ Fin n} {v : β → M} {xs : Fin (n + m) → M}
Goal: Sum.elim v xs ∘ FirstOrder.Language.BoundedFormula.relabelAux g m =
  Sum.elim (Sum.elim v (xs ∘ Fin.castAdd m) ∘ g) (xs ∘ Fin.natAdd n)
-- FirstOrder.Language.BoundedFormula.relabelAux_sum_inl
@[simp]
theorem relabelAux_sum_inl (k : ℕ) :
    relabelAux (Sum.inl : α → α ⊕ (Fin n)) k = Sum.map id (natAdd n) 
Arguments: {α : Type u'} {n : ℕ} (k : ℕ)
Goal: FirstOrder.Language.BoundedFormula.relabelAux Sum.inl k = Sum.map id (Fin.natAdd n)
-- FirstOrder.Language.BoundedFormula.relabel_falsum
@[simp]
theorem relabel_falsum (g : α → β ⊕ (Fin n)) {k} :
    (falsum : L.BoundedFormula α k).relabel g = falsum 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ}
Goal: FirstOrder.Language.BoundedFormula.relabel g FirstOrder.Language.BoundedFormula.falsum =
  FirstOrder.Language.BoundedFormula.falsum
-- FirstOrder.Language.BoundedFormula.relabel_bot
@[simp]
theorem relabel_bot (g : α → β ⊕ (Fin n)) {k} : (⊥ : L.BoundedFormula α k).relabel g = ⊥ 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ}
Goal: FirstOrder.Language.BoundedFormula.relabel g ⊥ = ⊥
-- FirstOrder.Language.BoundedFormula.relabel_imp
@[simp]
theorem relabel_imp (g : α → β ⊕ (Fin n)) {k} (φ ψ : L.BoundedFormula α k) :
    (φ.imp ψ).relabel g = (φ.relabel g).imp (ψ.relabel g) 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ} (φ ψ : L.BoundedFormula α k)
Goal: FirstOrder.Language.BoundedFormula.relabel g (φ.imp ψ) =
  (FirstOrder.Language.BoundedFormula.relabel g φ).imp (FirstOrder.Language.BoundedFormula.relabel g ψ)
-- FirstOrder.Language.BoundedFormula.relabel_not
@[simp]
theorem relabel_not (g : α → β ⊕ (Fin n)) {k} (φ : L.BoundedFormula α k) :
    φ.not.relabel g = (φ.relabel g).not 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ} (φ : L.BoundedFormula α k)
Goal: FirstOrder.Language.BoundedFormula.relabel g φ.not = (FirstOrder.Language.BoundedFormula.relabel g φ).not
-- FirstOrder.Language.BoundedFormula.relabel_all
@[simp]
theorem relabel_all (g : α → β ⊕ (Fin n)) {k} (φ : L.BoundedFormula α (k + 1)) :
    φ.all.relabel g = (φ.relabel g).all 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ} (φ : L.BoundedFormula α (k + 1))
Goal: FirstOrder.Language.BoundedFormula.relabel g φ.all = (FirstOrder.Language.BoundedFormula.relabel g φ).all
-- FirstOrder.Language.BoundedFormula.relabel_ex
@[simp]
theorem relabel_ex (g : α → β ⊕ (Fin n)) {k} (φ : L.BoundedFormula α (k + 1)) :
    φ.ex.relabel g = (φ.relabel g).ex 
Arguments: {L : FirstOrder.Language} {α : Type u'} {β : Type v'} {n : ℕ} (g : α → β ⊕ Fin n) {k : ℕ} (φ : L.BoundedFormula α (k + 1))
Goal: FirstOrder.Language.BoundedFormula.relabel g φ.ex = (FirstOrder.Language.BoundedFormula.relabel g φ).ex
-- FirstOrder.Language.BoundedFormula.relabel_sum_inl
@[simp]
theorem relabel_sum_inl (φ : L.BoundedFormula α n) :
    (φ.relabel Sum.inl : L.BoundedFormula α (0 + n)) = φ.castLE (ge_of_eq (zero_add n)) 
Arguments: {L : FirstOrder.Language} {α : Type u'} {n : ℕ} (φ : L.BoundedFormula α n)
Goal: FirstOrder.Language.BoundedFormula.relabel Sum.inl φ = FirstOrder.Language.BoundedFormula.castLE ⋯ φ
-- FirstOrder.Language.LHom.id_onBoundedFormula
@[simp]
theorem id_onBoundedFormula :
    ((LHom.id L).onBoundedFormula : L.BoundedFormula α n → L.BoundedFormula α n) = id 
Arguments: {L : FirstOrder.Language} {α : Type u'} {n : ℕ}
Goal: (FirstOrder.Language.LHom.id L).onBoundedFormula = id
-- FirstOrder.Language.LHom.comp_onBoundedFormula
@[simp]
theorem comp_onBoundedFormula {L'' : Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L') :
    ((φ.comp ψ).onBoundedFormula : L.BoundedFormula α n → L''.BoundedFormula α n) =
      φ.onBoundedFormula ∘ ψ.onBoundedFormula 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {n : ℕ} {L'' : FirstOrder.Language} (φ : L' →ᴸ L'') (ψ : L →ᴸ L')
Goal: (φ.comp ψ).onBoundedFormula = φ.onBoundedFormula ∘ ψ.onBoundedFormula
-- FirstOrder.Language.LHom.mem_onTheory
@[simp]
theorem mem_onTheory {g : L →ᴸ L'} {T : L.Theory} {φ : L'.Sentence} :
    φ ∈ g.onTheory T ↔ ∃ φ₀, φ₀ ∈ T ∧ g.onSentence φ₀ = φ 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {g : L →ᴸ L'} {T : L.Theory} {φ : L'.Sentence}
Goal: φ ∈ g.onTheory T ↔ ∃ φ₀ ∈ T, g.onSentence φ₀ = φ
-- FirstOrder.Language.LEquiv.onBoundedFormula_symm_apply
@[simps]
def onBoundedFormula (φ : L ≃ᴸ L') : L.BoundedFormula α n ≃ L'.BoundedFormula α n 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {n : ℕ} (φ : L ≃ᴸ L')
Goal: ∀ (a : L'.BoundedFormula α n), φ.onBoundedFormula.symm a = φ.invLHom.onBoundedFormula a
-- FirstOrder.Language.LEquiv.onBoundedFormula_apply
@[simps]
def onBoundedFormula (φ : L ≃ᴸ L') : L.BoundedFormula α n ≃ L'.BoundedFormula α n 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {n : ℕ} (φ : L ≃ᴸ L')
Goal: ∀ (a : L.BoundedFormula α n), φ.onBoundedFormula a = φ.toLHom.onBoundedFormula a
-- FirstOrder.Language.LEquiv.onBoundedFormula_symm
theorem onBoundedFormula_symm (φ : L ≃ᴸ L') :
    (φ.onBoundedFormula.symm : L'.BoundedFormula α n ≃ L.BoundedFormula α n) =
      φ.symm.onBoundedFormula 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} {n : ℕ} (φ : L ≃ᴸ L')
Goal: φ.onBoundedFormula.symm = φ.symm.onBoundedFormula
-- FirstOrder.Language.LEquiv.onFormula_apply
@[simp]
theorem onFormula_apply (φ : L ≃ᴸ L') :
    (φ.onFormula : L.Formula α → L'.Formula α) = φ.toLHom.onFormula 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} (φ : L ≃ᴸ L')
Goal: ⇑φ.onFormula = φ.toLHom.onFormula
-- FirstOrder.Language.LEquiv.onFormula_symm
@[simp]
theorem onFormula_symm (φ : L ≃ᴸ L') :
    (φ.onFormula.symm : L'.Formula α ≃ L.Formula α) = φ.symm.onFormula 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} {α : Type u'} (φ : L ≃ᴸ L')
Goal: φ.onFormula.symm = φ.symm.onFormula
-- FirstOrder.Language.LEquiv.onSentence_symm_apply
@[simps!] -- Porting note: add `!` to `simps`
def onSentence (φ : L ≃ᴸ L') : L.Sentence ≃ L'.Sentence 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} (φ : L ≃ᴸ L')
Goal: ∀ (a : L'.BoundedFormula Empty 0), φ.onSentence.symm a = φ.invLHom.onBoundedFormula a
-- FirstOrder.Language.LEquiv.onSentence_apply
@[simps!] -- Porting note: add `!` to `simps`
def onSentence (φ : L ≃ᴸ L') : L.Sentence ≃ L'.Sentence 
Arguments: {L : FirstOrder.Language} {L' : FirstOrder.Language} (φ : L ≃ᴸ L')
Goal: ∀ (a : L.BoundedFormula Empty 0), φ.onSentence a = φ.toLHom.onBoundedFormula a
-- FirstOrder.Language.Formula.equivSentence_not
theorem equivSentence_not (φ : L.Formula α) : equivSentence φ.not = (equivSentence φ).not 
Arguments: {L : FirstOrder.Language} {α : Type u'} (φ : L.Formula α)
Goal: FirstOrder.Language.Formula.equivSentence φ.not =
  FirstOrder.Language.Formula.not (FirstOrder.Language.Formula.equivSentence φ)
-- FirstOrder.Language.Formula.equivSentence_inf
theorem equivSentence_inf (φ ψ : L.Formula α) :
    equivSentence (φ ⊓ ψ) = equivSentence φ ⊓ equivSentence ψ 
Arguments: {L : FirstOrder.Language} {α : Type u'} (φ ψ : L.Formula α)
Goal: FirstOrder.Language.Formula.equivSentence (φ ⊓ ψ) =
  FirstOrder.Language.Formula.equivSentence φ ⊓ FirstOrder.Language.Formula.equivSentence ψ
-- FirstOrder.Language.distinctConstantsTheory_mono
theorem distinctConstantsTheory_mono {s t : Set α} (h : s ⊆ t) :
    L.distinctConstantsTheory s ⊆ L.distinctConstantsTheory t 
Arguments: {L : FirstOrder.Language} {α : Type u'} {s t : Set α} (h : s ⊆ t)
Goal: L.distinctConstantsTheory s ⊆ L.distinctConstantsTheory t
-- FirstOrder.Language.monotone_distinctConstantsTheory
theorem monotone_distinctConstantsTheory :
    Monotone (L.distinctConstantsTheory : Set α → L[[α]].Theory) 
Arguments: {L : FirstOrder.Language} {α : Type u'}
Goal: Monotone L.distinctConstantsTheory
-- FirstOrder.Language.directed_distinctConstantsTheory
theorem directed_distinctConstantsTheory :
    Directed (· ⊆ ·) (L.distinctConstantsTheory : Set α → L[[α]].Theory) 
Arguments: {L : FirstOrder.Language} {α : Type u'}
Goal: Directed (fun x x_1 => x ⊆ x_1) L.distinctConstantsTheory
-- FirstOrder.Language.distinctConstantsTheory_eq_iUnion
theorem distinctConstantsTheory_eq_iUnion (s : Set α) :
    L.distinctConstantsTheory s =
      ⋃ t : Finset s,
        L.distinctConstantsTheory (t.map (Function.Embedding.subtype fun x => x ∈ s)) 
Arguments: {L : FirstOrder.Language} {α : Type u'} (s : Set α)
Goal: L.distinctConstantsTheory s = ⋃ t, L.distinctConstantsTheory ↑(Finset.map (Function.Embedding.subtype fun x => x ∈ s) t)
-- _private.Mathlib.NumberTheory.FLT.Three.0.cube_of_castHom_ne_zero
private lemma cube_of_castHom_ne_zero {n : ZMod 9} :
    castHom (show 3 ∣ 9 by norm_num) (ZMod 3) n ≠ 0 → n ^ 3 = 1 ∨ n ^ 3 = 8 
Arguments: {n : ZMod 9}
Goal: (ZMod.castHom ⋯ (ZMod 3)) n ≠ 0 → n ^ 3 = 1 ∨ n ^ 3 = 8
-- _private.Mathlib.NumberTheory.FLT.Three.0.cube_of_not_dvd
private lemma cube_of_not_dvd {n : ℤ} (h : ¬ 3 ∣ n) :
    (n : ZMod 9) ^ 3 = 1 ∨ (n : ZMod 9) ^ 3 = 8 
Arguments: {n : ℤ} (h : ¬3 ∣ n)
Goal: ↑n ^ 3 = 1 ∨ ↑n ^ 3 = 8
-- fermatLastTheoremThree_case_1
theorem fermatLastTheoremThree_case_1 {a b c : ℤ} (hdvd : ¬ 3 ∣ a * b * c) :
    a ^ 3 + b ^ 3 ≠ c ^ 3 
Arguments: {a b c : ℤ} (hdvd : ¬3 ∣ a * b * c)
Goal: a ^ 3 + b ^ 3 ≠ c ^ 3
-- _private.Mathlib.NumberTheory.FLT.Three.0.three_dvd_b_of_dvd_a_of_gcd_eq_one_of_case2
private lemma three_dvd_b_of_dvd_a_of_gcd_eq_one_of_case2 {a b c : ℤ} (ha : a ≠ 0)
    (Hgcd : Finset.gcd {a, b, c} id = 1) (h3a : 3 ∣ a) (HF : a ^ 3 + b ^ 3 + c ^ 3 = 0)
    (H : ∀ a b c : ℤ, c ≠ 0 → ¬ 3 ∣ a → ¬ 3 ∣ b  → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3) :
    3 ∣ b 
Arguments: {a b c : ℤ} (ha : a ≠ 0) (Hgcd : {a, b, c}.gcd id = 1) (h3a : 3 ∣ a) (HF : a ^ 3 + b ^ 3 + c ^ 3 = 0) (H : ∀ (a b c : ℤ), c ≠ 0 → ¬3 ∣ a → ¬3 ∣ b → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3)
Goal: 3 ∣ b
-- _private.Mathlib.NumberTheory.FLT.Three.0.fermatLastTheoremThree_of_dvd_a_of_gcd_eq_one_of_case2
private lemma fermatLastTheoremThree_of_dvd_a_of_gcd_eq_one_of_case2 {a b c : ℤ} (ha : a ≠ 0)
    (h3a : 3 ∣ a) (Hgcd : Finset.gcd {a, b, c} id = 1)
    (H : ∀ a b c : ℤ, c ≠ 0 → ¬ 3 ∣ a → ¬ 3 ∣ b  → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3) :
    a ^ 3 + b ^ 3 + c ^ 3 ≠ 0 
Arguments: {a b c : ℤ} (ha : a ≠ 0) (h3a : 3 ∣ a) (Hgcd : {a, b, c}.gcd id = 1) (H : ∀ (a b c : ℤ), c ≠ 0 → ¬3 ∣ a → ¬3 ∣ b → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3)
Goal: a ^ 3 + b ^ 3 + c ^ 3 ≠ 0
-- fermatLastTheoremThree_of_three_dvd_only_c
theorem fermatLastTheoremThree_of_three_dvd_only_c
    (H : ∀ a b c : ℤ, c ≠ 0 → ¬ 3 ∣ a → ¬ 3 ∣ b  → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3) :
    FermatLastTheoremFor 3 
Arguments: (H : ∀ (a b c : ℤ), c ≠ 0 → ¬3 ∣ a → ¬3 ∣ b → 3 ∣ c → IsCoprime a b → a ^ 3 + b ^ 3 ≠ c ^ 3)
Goal: FermatLastTheoremFor 3
-- FermatLastTheoremForThree_of_FermatLastTheoremThreeGen
lemma FermatLastTheoremForThree_of_FermatLastTheoremThreeGen :
    FermatLastTheoremForThreeGen hζ → FermatLastTheoremFor 3 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} (hζ : IsPrimitiveRoot ζ ↑3)
Goal: FermatLastTheoremForThreeGen hζ → FermatLastTheoremFor 3
-- FermatLastTheoremForThreeGen.Solution'.hc
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: self.c ≠ 0
-- FermatLastTheoremForThreeGen.Solution'.ha
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: ¬hζ.toInteger - 1 ∣ self.a
-- FermatLastTheoremForThreeGen.Solution'.coprime
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: IsCoprime self.a self.b
-- FermatLastTheoremForThreeGen.Solution'.hb
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: ¬hζ.toInteger - 1 ∣ self.b
-- FermatLastTheoremForThreeGen.Solution'.hcdvd
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: hζ.toInteger - 1 ∣ self.c
-- FermatLastTheoremForThreeGen.Solution'.H
structure Solution' where
  a : 𝓞 K
  b : 𝓞 K
  c : 𝓞 K
  u : (𝓞 K)ˣ
  ha : ¬ λ ∣ a
  hb : ¬ λ ∣ b
  hc : c ≠ 0
  coprime : IsCoprime a b
  hcdvd : λ ∣ c
  H : a ^ 3 + b ^ 3 = u * c ^ 3
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: self.a ^ 3 + self.b ^ 3 = ↑self.u * self.c ^ 3
-- FermatLastTheoremForThreeGen.Solution.hab
structure Solution extends Solution' hζ where
  hab : λ ^ 2 ∣ a + b
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (self : FermatLastTheoremForThreeGen.Solution hζ)
Goal: (hζ.toInteger - 1) ^ 2 ∣ self.a + self.b
-- FermatLastTheoremForThreeGen.Solution'.multiplicity_lambda_c_finite
lemma Solution'.multiplicity_lambda_c_finite :
    multiplicity.Finite (hζ.toInteger - 1) S'.c 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: multiplicity.Finite (hζ.toInteger - 1) S'.c
-- FermatLastTheoremForThreeGen.Solution.exists_minimal
lemma Solution.exists_minimal : ∃ (S₁ : Solution hζ), S₁.isMinimal 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S : FermatLastTheoremForThreeGen.Solution hζ) [DecidableRel fun a b => a ∣ b]
Goal: ∃ S₁, S₁.isMinimal
-- FermatLastTheoremForThreeGen.a_cube_b_cube_congr_one_or_neg_one
lemma a_cube_b_cube_congr_one_or_neg_one :
    λ ^ 4 ∣ S'.a ^ 3 - 1 ∧ λ ^ 4 ∣ S'.b ^ 3 + 1 ∨ λ ^ 4 ∣ S'.a ^ 3 + 1 ∧ λ ^ 4 ∣ S'.b ^ 3 - 1 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: (hζ.toInteger - 1) ^ 4 ∣ S'.a ^ 3 - 1 ∧ (hζ.toInteger - 1) ^ 4 ∣ S'.b ^ 3 + 1 ∨
  (hζ.toInteger - 1) ^ 4 ∣ S'.a ^ 3 + 1 ∧ (hζ.toInteger - 1) ^ 4 ∣ S'.b ^ 3 - 1
-- FermatLastTheoremForThreeGen.lambda_pow_four_dvd_c_cube
lemma lambda_pow_four_dvd_c_cube : λ ^ 4 ∣ S'.c ^ 3 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: (hζ.toInteger - 1) ^ 4 ∣ S'.c ^ 3
-- FermatLastTheoremForThreeGen.lambda_sq_dvd_c
lemma lambda_sq_dvd_c : λ ^ 2 ∣ S'.c 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ) [DecidableRel fun a b => a ∣ b]
Goal: (hζ.toInteger - 1) ^ 2 ∣ S'.c
-- FermatLastTheoremForThreeGen.Solution'.two_le_multiplicity
lemma Solution'.two_le_multiplicity : 2 ≤ S'.multiplicity 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ) [DecidableRel fun a b => a ∣ b]
Goal: 2 ≤ S'.multiplicity
-- FermatLastTheoremForThreeGen.Solution.two_le_multiplicity
lemma Solution.two_le_multiplicity : 2 ≤ S.multiplicity 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S : FermatLastTheoremForThreeGen.Solution hζ) [DecidableRel fun a b => a ∣ b]
Goal: 2 ≤ S.multiplicity
-- FermatLastTheoremForThreeGen.a_cube_add_b_cube_eq_mul
lemma a_cube_add_b_cube_eq_mul :
    S'.a ^ 3 + S'.b ^ 3 = (S'.a + S'.b) * (S'.a + η * S'.b) * (S'.a + η ^ 2 * S'.b) 
Arguments: {K : Type u_1} [Field K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ)
Goal: S'.a ^ 3 + S'.b ^ 3 = (S'.a + S'.b) * (S'.a + ↑⋯.unit * S'.b) * (S'.a + ↑⋯.unit ^ 2 * S'.b)
-- FermatLastTheoremForThreeGen.lambda_sq_dvd_or_dvd_or_dvd
lemma lambda_sq_dvd_or_dvd_or_dvd :
    λ ^ 2 ∣ S'.a + S'.b ∨ λ ^ 2 ∣ S'.a + η * S'.b ∨ λ ^ 2 ∣ S'.a + η ^ 2 * S'.b 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ) [DecidableRel fun a b => a ∣ b]
Goal: (hζ.toInteger - 1) ^ 2 ∣ S'.a + S'.b ∨
  (hζ.toInteger - 1) ^ 2 ∣ S'.a + ↑⋯.unit * S'.b ∨ (hζ.toInteger - 1) ^ 2 ∣ S'.a + ↑⋯.unit ^ 2 * S'.b
-- FermatLastTheoremForThreeGen.ex_cube_add_cube_eq_and_isCoprime_and_not_dvd_and_dvd
lemma ex_cube_add_cube_eq_and_isCoprime_and_not_dvd_and_dvd :
    ∃ (a' b' : 𝓞 K), a' ^ 3 + b' ^ 3 = S'.u * S'.c ^ 3 ∧ IsCoprime a' b' ∧ ¬ λ ∣ a' ∧
      ¬ λ ∣ b' ∧ λ ^ 2 ∣ a' + b' 
Arguments: {K : Type u_1} [Field K] [NumberField K] [IsCyclotomicExtension {3} ℚ K] {ζ : K} {hζ : IsPrimitiveRoot ζ ↑3} (S' : FermatLastTheoremForThreeGen.Solution' hζ) [DecidableRel fun a b => a ∣ b]
Goal: ∃ a' b',
  a' ^ 3 + b' ^ 3 = ↑S'.u * S'.c ^ 3 ∧
    IsCoprime a' b' ∧ ¬hζ.toInteger - 1 ∣ a' ∧ ¬hζ.toInteger - 1 ∣ b' ∧ (hζ.toInteger - 1) ^ 2 ∣ a' + b'