ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.TwoSquare.costructuredArrowDownwardsPrecomp_map
@[simps]
def costructuredArrowDownwardsPrecomp
    {X₂ X₂' : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃) (g' : R.obj X₂' ⟶ B.obj X₃)
    (γ : X₂' ⟶ X₂) (hγ : R.map γ ≫ g = g') :
    w.CostructuredArrowDownwards g ⥤ w.CostructuredArrowDownwards g' 
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} (w : CategoryTheory.TwoSquare T L R B) {X₂ X₂' : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃) (g' : R.obj X₂' ⟶ B.obj X₃) (γ : X₂' ⟶ X₂) (hγ : CategoryTheory.CategoryStruct.comp (R.map γ) g = g') {A A' : w.CostructuredArrowDownwards g} (φ : A ⟶ A')
Goal: (w.costructuredArrowDownwardsPrecomp g g' γ hγ).map φ =
  CategoryTheory.CostructuredArrow.homMk (CategoryTheory.StructuredArrow.homMk φ.left.right ⋯) ⋯
-- CategoryTheory.TwoSquare.GuitartExact.isConnected_rightwards
class GuitartExact : Prop where
  isConnected_rightwards {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃) :
    IsConnected (w.StructuredArrowRightwards g)
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} {w : CategoryTheory.TwoSquare T L R B} [self : w.GuitartExact] {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃)
Goal: CategoryTheory.IsConnected (w.StructuredArrowRightwards g)
-- CategoryTheory.TwoSquare.guitartExact_iff_isConnected_rightwards
lemma guitartExact_iff_isConnected_rightwards :
    w.GuitartExact ↔ ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃),
      IsConnected (w.StructuredArrowRightwards g) 
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} (w : CategoryTheory.TwoSquare T L R B)
Goal: w.GuitartExact ↔
  ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃), CategoryTheory.IsConnected (w.StructuredArrowRightwards g)
-- CategoryTheory.TwoSquare.guitartExact_iff_isConnected_downwards
lemma guitartExact_iff_isConnected_downwards :
    w.GuitartExact ↔ ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃),
      IsConnected (w.CostructuredArrowDownwards g) 
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} (w : CategoryTheory.TwoSquare T L R B)
Goal: w.GuitartExact ↔
  ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃), CategoryTheory.IsConnected (w.CostructuredArrowDownwards g)
-- CategoryTheory.TwoSquare.guitartExact_iff_final
lemma guitartExact_iff_final :
    w.GuitartExact ↔ ∀ (X₃ : C₃), (w.costructuredArrowRightwards X₃).Final 
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} (w : CategoryTheory.TwoSquare T L R B)
Goal: w.GuitartExact ↔ ∀ (X₃ : C₃), (w.costructuredArrowRightwards X₃).Final
-- CategoryTheory.TwoSquare.guitartExact_iff_initial
lemma guitartExact_iff_initial :
    w.GuitartExact ↔ ∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial 
Arguments: {C₁ : Type u₁} {C₂ : Type u₂} {C₃ : Type u₃} {C₄ : Type u₄} [CategoryTheory.Category.{v₁, u₁} C₁] [CategoryTheory.Category.{v₂, u₂} C₂] [CategoryTheory.Category.{v₃, u₃} C₃] [CategoryTheory.Category.{v₄, u₄} C₄] {T : CategoryTheory.Functor C₁ C₂} {L : CategoryTheory.Functor C₁ C₃} {R : CategoryTheory.Functor C₂ C₄} {B : CategoryTheory.Functor C₃ C₄} (w : CategoryTheory.TwoSquare T L R B)
Goal: w.GuitartExact ↔ ∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial
-- Field.finSepDegree_eq_of_equiv
theorem finSepDegree_eq_of_equiv (i : E ≃ₐ[F] K) :
    finSepDegree F E = finSepDegree F K 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] (i : E ≃ₐ[F] K)
Goal: Field.finSepDegree F E = Field.finSepDegree F K
-- Field.finSepDegree_self
@[simp]
theorem finSepDegree_self : finSepDegree F F = 1 
Arguments: (F : Type u) [Field F]
Goal: Field.finSepDegree F F = 1
-- IntermediateField.finSepDegree_bot
@[simp]
theorem finSepDegree_bot : finSepDegree F (⊥ : IntermediateField F E) = 1 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E]
Goal: Field.finSepDegree F ↥⊥ = 1
-- IntermediateField.finSepDegree_bot'
@[simp]
theorem finSepDegree_bot' : finSepDegree F (⊥ : IntermediateField E K) = finSepDegree F E 
Arguments: {F : Type u} (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] [Algebra E K] [IsScalarTower F E K]
Goal: Field.finSepDegree F ↥⊥ = Field.finSepDegree F E
-- IntermediateField.finSepDegree_top
@[simp]
theorem finSepDegree_top : finSepDegree F (⊤ : IntermediateField E K) = finSepDegree F K 
Arguments: {F : Type u} (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] [Algebra E K] [IsScalarTower F E K]
Goal: Field.finSepDegree F ↥⊤ = Field.finSepDegree F K
-- Field.finSepDegree_eq_of_adjoin_splits
theorem finSepDegree_eq_of_adjoin_splits {S : Set E} (hS : adjoin F S = ⊤)
    (hK : ∀ s ∈ S, IsIntegral F s ∧ Splits (algebraMap F K) (minpoly F s)) :
    finSepDegree F E = Nat.card (E →ₐ[F] K) 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] {S : Set E} (hS : IntermediateField.adjoin F S = ⊤) (hK : ∀ s ∈ S, IsIntegral F s ∧ Polynomial.Splits (algebraMap F K) (minpoly F s))
Goal: Field.finSepDegree F E = Nat.card (E →ₐ[F] K)
-- Field.finSepDegree_eq_of_isAlgClosed
theorem finSepDegree_eq_of_isAlgClosed [Algebra.IsAlgebraic F E] [IsAlgClosed K] :
    finSepDegree F E = Nat.card (E →ₐ[F] K) 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] [Algebra.IsAlgebraic F E] [IsAlgClosed K]
Goal: Field.finSepDegree F E = Nat.card (E →ₐ[F] K)
-- Field.finSepDegree_mul_finSepDegree_of_isAlgebraic
theorem finSepDegree_mul_finSepDegree_of_isAlgebraic
    [Algebra E K] [IsScalarTower F E K] [Algebra.IsAlgebraic E K] :
    finSepDegree F E * finSepDegree E K = finSepDegree F K 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] [Algebra E K] [IsScalarTower F E K] [Algebra.IsAlgebraic E K]
Goal: Field.finSepDegree F E * Field.finSepDegree E K = Field.finSepDegree F K
-- Polynomial.natSepDegree_le_natDegree
theorem natSepDegree_le_natDegree : f.natSepDegree ≤ f.natDegree 
Arguments: {F : Type u} [Field F] (f : F[X])
Goal: f.natSepDegree ≤ f.natDegree
-- Polynomial.natSepDegree_X_sub_C
@[simp]
theorem natSepDegree_X_sub_C (x : F) : (X - C x).natSepDegree = 1 
Arguments: {F : Type u} [Field F] (x : F)
Goal: (Polynomial.X - Polynomial.C x).natSepDegree = 1
-- Polynomial.natSepDegree_X
@[simp]
theorem natSepDegree_X : (X : F[X]).natSepDegree = 1 
Arguments: {F : Type u} [Field F]
Goal: Polynomial.X.natSepDegree = 1
-- Polynomial.natSepDegree_eq_zero
theorem natSepDegree_eq_zero (h : f.natDegree = 0) : f.natSepDegree = 0 
Arguments: {F : Type u} [Field F] (f : F[X]) (h : f.natDegree = 0)
Goal: f.natSepDegree = 0
-- Polynomial.natSepDegree_C
@[simp]
theorem natSepDegree_C (x : F) : (C x).natSepDegree = 0 
Arguments: {F : Type u} [Field F] (x : F)
Goal: (Polynomial.C x).natSepDegree = 0
-- Polynomial.natSepDegree_zero
@[simp]
theorem natSepDegree_zero : (0 : F[X]).natSepDegree = 0 
Arguments: {F : Type u} [Field F]
Goal: Polynomial.natSepDegree 0 = 0
-- Polynomial.natSepDegree_one
@[simp]
theorem natSepDegree_one : (1 : F[X]).natSepDegree = 0 
Arguments: {F : Type u} [Field F]
Goal: Polynomial.natSepDegree 1 = 0
-- Polynomial.natSepDegree_ne_zero
theorem natSepDegree_ne_zero (h : f.natDegree ≠ 0) : f.natSepDegree ≠ 0 
Arguments: {F : Type u} [Field F] (f : F[X]) (h : f.natDegree ≠ 0)
Goal: f.natSepDegree ≠ 0
-- Polynomial.natSepDegree_eq_zero_iff
theorem natSepDegree_eq_zero_iff : f.natSepDegree = 0 ↔ f.natDegree = 0 
Arguments: {F : Type u} [Field F] (f : F[X])
Goal: f.natSepDegree = 0 ↔ f.natDegree = 0
-- Polynomial.natSepDegree_ne_zero_iff
theorem natSepDegree_ne_zero_iff : f.natSepDegree ≠ 0 ↔ f.natDegree ≠ 0 
Arguments: {F : Type u} [Field F] (f : F[X])
Goal: f.natSepDegree ≠ 0 ↔ f.natDegree ≠ 0
-- Polynomial.natSepDegree_eq_natDegree_iff
theorem natSepDegree_eq_natDegree_iff (hf : f ≠ 0) :
    f.natSepDegree = f.natDegree ↔ f.Separable 
Arguments: {F : Type u} [Field F] (f : F[X]) (hf : f ≠ 0)
Goal: f.natSepDegree = f.natDegree ↔ f.Separable
-- Polynomial.natSepDegree_eq_natDegree_of_separable
theorem natSepDegree_eq_natDegree_of_separable (h : f.Separable) :
    f.natSepDegree = f.natDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) (h : f.Separable)
Goal: f.natSepDegree = f.natDegree
-- Polynomial.Separable.natSepDegree_eq_natDegree
theorem Separable.natSepDegree_eq_natDegree (h : f.Separable) :
    f.natSepDegree = f.natDegree 
Arguments: {F : Type u} [Field F] {f : F[X]} (h : f.Separable)
Goal: f.natSepDegree = f.natDegree
-- Polynomial.natSepDegree_eq_of_splits
theorem natSepDegree_eq_of_splits (h : f.Splits (algebraMap F E)) :
    f.natSepDegree = (f.aroots E).toFinset.card 
Arguments: {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] (f : F[X]) (h : Polynomial.Splits (algebraMap F E) f)
Goal: f.natSepDegree = (f.aroots E).toFinset.card
-- Polynomial.natSepDegree_eq_of_isAlgClosed
theorem natSepDegree_eq_of_isAlgClosed [IsAlgClosed E] :
    f.natSepDegree = (f.aroots E).toFinset.card 
Arguments: {F : Type u} (E : Type v) [Field F] [Field E] [Algebra F E] (f : F[X]) [IsAlgClosed E]
Goal: f.natSepDegree = (f.aroots E).toFinset.card
-- Polynomial.natSepDegree_map
theorem natSepDegree_map : (f.map (algebraMap F E)).natSepDegree = f.natSepDegree 
Arguments: {F : Type u} (E : Type v) [Field F] [Field E] [Algebra F E] (f : F[X])
Goal: (Polynomial.map (algebraMap F E) f).natSepDegree = f.natSepDegree
-- Polynomial.natSepDegree_C_mul
@[simp]
theorem natSepDegree_C_mul {x : F} (hx : x ≠ 0) :
    (C x * f).natSepDegree = f.natSepDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) {x : F} (hx : x ≠ 0)
Goal: (Polynomial.C x * f).natSepDegree = f.natSepDegree
-- Polynomial.natSepDegree_smul_nonzero
@[simp]
theorem natSepDegree_smul_nonzero {x : F} (hx : x ≠ 0) :
    (x • f).natSepDegree = f.natSepDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) {x : F} (hx : x ≠ 0)
Goal: (x • f).natSepDegree = f.natSepDegree
-- Polynomial.natSepDegree_pow
@[simp]
theorem natSepDegree_pow {n : ℕ} : (f ^ n).natSepDegree = if n = 0 then 0 else f.natSepDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) {n : ℕ}
Goal: (f ^ n).natSepDegree = if n = 0 then 0 else f.natSepDegree
-- Polynomial.natSepDegree_pow_of_ne_zero
theorem natSepDegree_pow_of_ne_zero {n : ℕ} (hn : n ≠ 0) :
    (f ^ n).natSepDegree = f.natSepDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) {n : ℕ} (hn : n ≠ 0)
Goal: (f ^ n).natSepDegree = f.natSepDegree
-- Polynomial.natSepDegree_X_pow
theorem natSepDegree_X_pow {n : ℕ} : (X ^ n : F[X]).natSepDegree = if n = 0 then 0 else 1 
Arguments: {F : Type u} [Field F] {n : ℕ}
Goal: (Polynomial.X ^ n).natSepDegree = if n = 0 then 0 else 1
-- Polynomial.natSepDegree_X_sub_C_pow
theorem natSepDegree_X_sub_C_pow {x : F} {n : ℕ} :
    ((X - C x) ^ n).natSepDegree = if n = 0 then 0 else 1 
Arguments: {F : Type u} [Field F] {x : F} {n : ℕ}
Goal: ((Polynomial.X - Polynomial.C x) ^ n).natSepDegree = if n = 0 then 0 else 1
-- Polynomial.natSepDegree_C_mul_X_sub_C_pow
theorem natSepDegree_C_mul_X_sub_C_pow {x y : F} {n : ℕ} (hx : x ≠ 0) :
    (C x * (X - C y) ^ n).natSepDegree = if n = 0 then 0 else 1 
Arguments: {F : Type u} [Field F] {x y : F} {n : ℕ} (hx : x ≠ 0)
Goal: (Polynomial.C x * (Polynomial.X - Polynomial.C y) ^ n).natSepDegree = if n = 0 then 0 else 1
-- Polynomial.natSepDegree_mul
theorem natSepDegree_mul (g : F[X]) :
    (f * g).natSepDegree ≤ f.natSepDegree + g.natSepDegree 
Arguments: {F : Type u} [Field F] (f g : F[X])
Goal: (f * g).natSepDegree ≤ f.natSepDegree + g.natSepDegree
-- Polynomial.natSepDegree_mul_eq_iff
theorem natSepDegree_mul_eq_iff (g : F[X]) :
    (f * g).natSepDegree = f.natSepDegree + g.natSepDegree ↔ (f = 0 ∧ g = 0) ∨ IsCoprime f g 
Arguments: {F : Type u} [Field F] (f g : F[X])
Goal: (f * g).natSepDegree = f.natSepDegree + g.natSepDegree ↔ f = 0 ∧ g = 0 ∨ IsCoprime f g
-- Polynomial.natSepDegree_mul_of_isCoprime
theorem natSepDegree_mul_of_isCoprime (g : F[X]) (hc : IsCoprime f g) :
    (f * g).natSepDegree = f.natSepDegree + g.natSepDegree 
Arguments: {F : Type u} [Field F] (f g : F[X]) (hc : IsCoprime f g)
Goal: (f * g).natSepDegree = f.natSepDegree + g.natSepDegree
-- Polynomial.natSepDegree_le_of_dvd
theorem natSepDegree_le_of_dvd (g : F[X]) (h1 : f ∣ g) (h2 : g ≠ 0) :
    f.natSepDegree ≤ g.natSepDegree 
Arguments: {F : Type u} [Field F] (f g : F[X]) (h1 : f ∣ g) (h2 : g ≠ 0)
Goal: f.natSepDegree ≤ g.natSepDegree
-- Polynomial.natSepDegree_expand
theorem natSepDegree_expand (q : ℕ) [hF : ExpChar F q] {n : ℕ} :
    (expand F (q ^ n) f).natSepDegree = f.natSepDegree 
Arguments: {F : Type u} [Field F] (f : F[X]) (q : ℕ) [hF : ExpChar F q] {n : ℕ}
Goal: ((Polynomial.expand F (q ^ n)) f).natSepDegree = f.natSepDegree
-- Polynomial.natSepDegree_X_pow_char_pow_sub_C
theorem natSepDegree_X_pow_char_pow_sub_C (q : ℕ) [ExpChar F q] (n : ℕ) (y : F) :
    (X ^ q ^ n - C y).natSepDegree = 1 
Arguments: {F : Type u} [Field F] (q : ℕ) [ExpChar F q] (n : ℕ) (y : F)
Goal: (Polynomial.X ^ q ^ n - Polynomial.C y).natSepDegree = 1
-- Polynomial.IsSeparableContraction.natSepDegree_eq
theorem IsSeparableContraction.natSepDegree_eq {g : Polynomial F} {q : ℕ} [ExpChar F q]
    (h : IsSeparableContraction q f g) : f.natSepDegree = g.natDegree 
Arguments: {F : Type u} [Field F] {f g : F[X]} {q : ℕ} [ExpChar F q] (h : Polynomial.IsSeparableContraction q f g)
Goal: f.natSepDegree = g.natDegree
-- Polynomial.HasSeparableContraction.natSepDegree_eq
theorem HasSeparableContraction.natSepDegree_eq
    {q : ℕ} [ExpChar F q] (hf : f.HasSeparableContraction q) :
    f.natSepDegree = hf.degree 
Arguments: {F : Type u} [Field F] {f : F[X]} {q : ℕ} [ExpChar F q] (hf : Polynomial.HasSeparableContraction q f)
Goal: f.natSepDegree = hf.degree
-- Irreducible.natSepDegree_dvd_natDegree
theorem natSepDegree_dvd_natDegree (h : Irreducible f) :
    f.natSepDegree ∣ f.natDegree 
Arguments: {F : Type u} [Field F] {f : F[X]} (h : Irreducible f)
Goal: f.natSepDegree ∣ f.natDegree
-- Irreducible.natSepDegree_eq_one_iff_of_monic'
theorem natSepDegree_eq_one_iff_of_monic' (q : ℕ) [ExpChar F q] (hm : f.Monic)
    (hi : Irreducible f) : f.natSepDegree = 1 ↔
    ∃ (n : ℕ) (y : F), f = expand F (q ^ n) (X - C y) 
Arguments: {F : Type u} [Field F] {f : F[X]} (q : ℕ) [ExpChar F q] (hm : f.Monic) (hi : Irreducible f)
Goal: f.natSepDegree = 1 ↔ ∃ n y, f = (Polynomial.expand F (q ^ n)) (Polynomial.X - Polynomial.C y)
-- Irreducible.natSepDegree_eq_one_iff_of_monic
theorem natSepDegree_eq_one_iff_of_monic (q : ℕ) [ExpChar F q] (hm : f.Monic)
    (hi : Irreducible f) : f.natSepDegree = 1 ↔ ∃ (n : ℕ) (y : F), f = X ^ q ^ n - C y 
Arguments: {F : Type u} [Field F] {f : F[X]} (q : ℕ) [ExpChar F q] (hm : f.Monic) (hi : Irreducible f)
Goal: f.natSepDegree = 1 ↔ ∃ n y, f = Polynomial.X ^ q ^ n - Polynomial.C y
-- Polynomial.Monic.eq_X_sub_C_pow_of_natSepDegree_eq_one_of_splits
theorem eq_X_sub_C_pow_of_natSepDegree_eq_one_of_splits (hm : f.Monic)
    (hs : f.Splits (RingHom.id F))
    (h : f.natSepDegree = 1) : ∃ (m : ℕ) (y : F), m ≠ 0 ∧ f = (X - C y) ^ m 
Arguments: {F : Type u} [Field F] {f : F[X]} (hm : f.Monic) (hs : Polynomial.Splits (RingHom.id F) f) (h : f.natSepDegree = 1)
Goal: ∃ m y, m ≠ 0 ∧ f = (Polynomial.X - Polynomial.C y) ^ m
-- Polynomial.Monic.eq_X_pow_char_pow_sub_C_of_natSepDegree_eq_one_of_irreducible
theorem eq_X_pow_char_pow_sub_C_of_natSepDegree_eq_one_of_irreducible (q : ℕ) [ExpChar F q]
    (hm : f.Monic) (hi : Irreducible f) (h : f.natSepDegree = 1) : ∃ (n : ℕ) (y : F),
      (n = 0 ∨ y ∉ (frobenius F q).range) ∧ f = X ^ q ^ n - C y 
Arguments: {F : Type u} [Field F] {f : F[X]} (q : ℕ) [ExpChar F q] (hm : f.Monic) (hi : Irreducible f) (h : f.natSepDegree = 1)
Goal: ∃ n y, (n = 0 ∨ y ∉ (frobenius F q).range) ∧ f = Polynomial.X ^ q ^ n - Polynomial.C y
-- Polynomial.Monic.eq_X_pow_char_pow_sub_C_pow_of_natSepDegree_eq_one
theorem eq_X_pow_char_pow_sub_C_pow_of_natSepDegree_eq_one (q : ℕ) [ExpChar F q] (hm : f.Monic)
    (h : f.natSepDegree = 1) : ∃ (m n : ℕ) (y : F),
      m ≠ 0 ∧ (n = 0 ∨ y ∉ (frobenius F q).range) ∧ f = (X ^ q ^ n - C y) ^ m 
Arguments: {F : Type u} [Field F] {f : F[X]} (q : ℕ) [ExpChar F q] (hm : f.Monic) (h : f.natSepDegree = 1)
Goal: ∃ m n y, m ≠ 0 ∧ (n = 0 ∨ y ∉ (frobenius F q).range) ∧ f = (Polynomial.X ^ q ^ n - Polynomial.C y) ^ m
-- Polynomial.Monic.natSepDegree_eq_one_iff
theorem natSepDegree_eq_one_iff (q : ℕ) [ExpChar F q] (hm : f.Monic) :
    f.natSepDegree = 1 ↔ ∃ (m n : ℕ) (y : F), m ≠ 0 ∧ f = (X ^ q ^ n - C y) ^ m 
Arguments: {F : Type u} [Field F] {f : F[X]} (q : ℕ) [ExpChar F q] (hm : f.Monic)
Goal: f.natSepDegree = 1 ↔ ∃ m n y, m ≠ 0 ∧ f = (Polynomial.X ^ q ^ n - Polynomial.C y) ^ m
-- minpoly.natSepDegree_eq_one_iff_eq_expand_X_sub_C
theorem natSepDegree_eq_one_iff_eq_expand_X_sub_C : (minpoly F x).natSepDegree = 1 ↔
    ∃ (n : ℕ) (y : F), minpoly F x = expand F (q ^ n) (X - C y) 
Arguments: {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] (q : ℕ) [hF : ExpChar F q] {x : E}
Goal: (minpoly F x).natSepDegree = 1 ↔ ∃ n y, minpoly F x = (Polynomial.expand F (q ^ n)) (Polynomial.X - Polynomial.C y)
-- minpoly.natSepDegree_eq_one_iff_eq_X_pow_sub_C
theorem natSepDegree_eq_one_iff_eq_X_pow_sub_C : (minpoly F x).natSepDegree = 1 ↔
    ∃ (n : ℕ) (y : F), minpoly F x = X ^ q ^ n - C y 
Arguments: {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] (q : ℕ) [hF : ExpChar F q] {x : E}
Goal: (minpoly F x).natSepDegree = 1 ↔ ∃ n y, minpoly F x = Polynomial.X ^ q ^ n - Polynomial.C y
-- minpoly.natSepDegree_eq_one_iff_pow_mem
theorem natSepDegree_eq_one_iff_pow_mem : (minpoly F x).natSepDegree = 1 ↔
    ∃ n : ℕ, x ^ q ^ n ∈ (algebraMap F E).range 
Arguments: {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] (q : ℕ) [hF : ExpChar F q] {x : E}
Goal: (minpoly F x).natSepDegree = 1 ↔ ∃ n, x ^ q ^ n ∈ (algebraMap F E).range
-- minpoly.natSepDegree_eq_one_iff_eq_X_sub_C_pow
theorem natSepDegree_eq_one_iff_eq_X_sub_C_pow : (minpoly F x).natSepDegree = 1 ↔
    ∃ n : ℕ, (minpoly F x).map (algebraMap F E) = (X - C x) ^ q ^ n 
Arguments: {F : Type u} {E : Type v} [Field F] [Field E] [Algebra F E] (q : ℕ) [hF : ExpChar F q] {x : E}
Goal: (minpoly F x).natSepDegree = 1 ↔
  ∃ n, Polynomial.map (algebraMap F E) (minpoly F x) = (Polynomial.X - Polynomial.C x) ^ q ^ n
-- IntermediateField.finSepDegree_adjoin_simple_eq_natSepDegree
theorem finSepDegree_adjoin_simple_eq_natSepDegree {α : E} (halg : IsAlgebraic F α) :
    finSepDegree F F⟮α⟯ = (minpoly F α).natSepDegree 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] {α : E} (halg : IsAlgebraic F α)
Goal: Field.finSepDegree F ↥F⟮α⟯ = (minpoly F α).natSepDegree
-- _private.Mathlib.FieldTheory.SeparableDegree.0.IntermediateField.finSepDegree_adjoin_simple_dvd_finrank
private theorem finSepDegree_adjoin_simple_dvd_finrank (α : E) :
    finSepDegree F F⟮α⟯ ∣ finrank F F⟮α⟯ 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (α : E)
Goal: Field.finSepDegree F ↥F⟮α⟯ ∣ FiniteDimensional.finrank F ↥F⟮α⟯
-- IntermediateField.finSepDegree_adjoin_simple_le_finrank
theorem finSepDegree_adjoin_simple_le_finrank (α : E) (halg : IsAlgebraic F α) :
    finSepDegree F F⟮α⟯ ≤ finrank F F⟮α⟯ 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (α : E) (halg : IsAlgebraic F α)
Goal: Field.finSepDegree F ↥F⟮α⟯ ≤ FiniteDimensional.finrank F ↥F⟮α⟯
-- IntermediateField.finSepDegree_adjoin_simple_eq_finrank_iff
theorem finSepDegree_adjoin_simple_eq_finrank_iff (α : E) (halg : IsAlgebraic F α) :
    finSepDegree F F⟮α⟯ = finrank F F⟮α⟯ ↔ IsSeparable F α 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (α : E) (halg : IsAlgebraic F α)
Goal: Field.finSepDegree F ↥F⟮α⟯ = FiniteDimensional.finrank F ↥F⟮α⟯ ↔ IsSeparable F α
-- Field.finSepDegree_dvd_finrank
theorem finSepDegree_dvd_finrank : finSepDegree F E ∣ finrank F E 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E]
Goal: Field.finSepDegree F E ∣ FiniteDimensional.finrank F E
-- Field.finSepDegree_le_finrank
theorem finSepDegree_le_finrank [FiniteDimensional F E] :
    finSepDegree F E ≤ finrank F E 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] [FiniteDimensional F E]
Goal: Field.finSepDegree F E ≤ FiniteDimensional.finrank F E
-- Field.finSepDegree_eq_finrank_of_isSeparable
theorem finSepDegree_eq_finrank_of_isSeparable [Algebra.IsSeparable F E] :
    finSepDegree F E = finrank F E 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] [Algebra.IsSeparable F E]
Goal: Field.finSepDegree F E = FiniteDimensional.finrank F E
-- Field.finSepDegree_eq_finrank_iff
theorem finSepDegree_eq_finrank_iff [FiniteDimensional F E] :
    finSepDegree F E = finrank F E ↔ Algebra.IsSeparable F E 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] [FiniteDimensional F E]
Goal: Field.finSepDegree F E = FiniteDimensional.finrank F E ↔ Algebra.IsSeparable F E
-- IntermediateField.isSeparable_of_mem_isSeparable
lemma IntermediateField.isSeparable_of_mem_isSeparable {L : IntermediateField F E}
    [Algebra.IsSeparable F L] {x : E} (h : x ∈ L) : IsSeparable F x 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] {L : IntermediateField F E} [Algebra.IsSeparable F ↥L] {x : E} (h : x ∈ L)
Goal: IsSeparable F x
-- IntermediateField.isSeparable_adjoin_simple_iff_isSeparable
theorem IntermediateField.isSeparable_adjoin_simple_iff_isSeparable {x : E} :
    Algebra.IsSeparable F F⟮x⟯ ↔ IsSeparable F x 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] {x : E}
Goal: Algebra.IsSeparable F ↥F⟮x⟯ ↔ IsSeparable F x
-- IsSeparable.of_algebra_isSeparable_of_isSeparable
theorem IsSeparable.of_algebra_isSeparable_of_isSeparable [Algebra E K] [IsScalarTower F E K]
    [Algebra.IsSeparable F E] {x : K} (hsep : IsSeparable E x) : IsSeparable F x 
Arguments: (F : Type u) {E : Type v} [Field F] [Field E] [Algebra F E] {K : Type w} [Field K] [Algebra F K] [Algebra E K] [IsScalarTower F E K] [Algebra.IsSeparable F E] {x : K} (hsep : IsSeparable E x)
Goal: IsSeparable F x
-- Algebra.IsSeparable.trans
theorem Algebra.IsSeparable.trans [Algebra E K] [IsScalarTower F E K]
    [Algebra.IsSeparable F E] [Algebra.IsSeparable E K] : Algebra.IsSeparable F K 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] (K : Type w) [Field K] [Algebra F K] [Algebra E K] [IsScalarTower F E K] [Algebra.IsSeparable F E] [Algebra.IsSeparable E K]
Goal: Algebra.IsSeparable F K
-- IntermediateField.isSeparable_adjoin_pair_of_isSeparable
theorem IntermediateField.isSeparable_adjoin_pair_of_isSeparable {x y : E}
    (hx : IsSeparable F x) (hy : IsSeparable F y) :
    Algebra.IsSeparable F F⟮x, y⟯ 
Arguments: (F : Type u) (E : Type v) [Field F] [Field E] [Algebra F E] {x y : E} (hx : IsSeparable F x) (hy : IsSeparable F y)
Goal: Algebra.IsSeparable F ↥F⟮x, y⟯