File: Mathlib/FieldTheory/IsSepClosed.lean

full_name: IsSepClosed.splits_of_separable
code: /-- Typeclass for separably closed fields.

To show `Polynomial.Splits p f` for an arbitrary ring homomorphism `f`,
see `IsSepClosed.splits_codomain` and `IsSepClosed.splits_domain`.
-/
class IsSepClosed : Prop where
  splits_of_separable : ∀ p : k[X], p.Separable → (p.Splits <| RingHom.id k)
goal: p.Separable → Polynomial.Splits (RingHom.id k) p

full_name: IsSepClosed
code: /-- Typeclass for separably closed fields.

To show `Polynomial.Splits p f` for an arbitrary ring homomorphism `f`,
see `IsSepClosed.splits_codomain` and `IsSepClosed.splits_domain`.
-/
class IsSepClosed : Prop where
  splits_of_separable : ∀ p : k[X], p.Separable → (p.Splits <| RingHom.id k)
goal: Prop

full_name: IsSepClosed.of_isAlgClosed
code: /-- An algebraically closed field is also separably closed. -/
instance IsSepClosed.of_isAlgClosed [IsAlgClosed k] : IsSepClosed k 
goal: IsSepClosed k

full_name: IsSepClosed.splits_codomain
code: /-- Every separable polynomial splits in the field extension `f : k →+* K` if `K` is
separably closed.

See also `IsSepClosed.splits_domain` for the case where `k` is separably closed.
-/
theorem IsSepClosed.splits_codomain [IsSepClosed K] {f : k →+* K}
    (p : k[X]) (h : p.Separable) : p.Splits f 
goal: Polynomial.Splits f p

full_name: IsSepClosed.splits_domain
code: /-- Every separable polynomial splits in the field extension `f : k →+* K` if `k` is
separably closed.

See also `IsSepClosed.splits_codomain` for the case where `k` is separably closed.
-/
theorem IsSepClosed.splits_domain [IsSepClosed k] {f : k →+* K}
    (p : k[X]) (h : p.Separable) : p.Splits f 
goal: Polynomial.Splits f p

full_name: IsSepClosed.exists_root
code: theorem exists_root [IsSepClosed k] (p : k[X]) (hp : p.degree ≠ 0) (hsep : p.Separable) :
    ∃ x, IsRoot p x 
goal: ∃ x, p.IsRoot x

full_name: IsSepClosed.isAlgClosed_of_perfectField
code: /-- A separably closed perfect field is also algebraically closed. -/
instance (priority := 100) isAlgClosed_of_perfectField [IsSepClosed k] [PerfectField k] :
    IsAlgClosed k 
goal: IsAlgClosed k

full_name: IsSepClosed.exists_pow_nat_eq
code: theorem exists_pow_nat_eq [IsSepClosed k] (x : k) (n : ℕ) [hn : NeZero (n : k)] :
    ∃ z, z ^ n = x 
goal: ∃ z, z ^ n = x

full_name: IsSepClosed.exists_eq_mul_self
code: theorem exists_eq_mul_self [IsSepClosed k] (x : k) [h2 : NeZero (2 : k)] : ∃ z, x = z * z 
goal: ∃ z, x = z * z

full_name: IsSepClosed.roots_eq_zero_iff
code: theorem roots_eq_zero_iff [IsSepClosed k] {p : k[X]} (hsep : p.Separable) :
    p.roots = 0 ↔ p = Polynomial.C (p.coeff 0) 
goal: p.roots = 0 ↔ p = Polynomial.C (p.coeff 0)

full_name: IsSepClosed.exists_eval₂_eq_zero
code: theorem exists_eval₂_eq_zero [IsSepClosed K] (f : k →+* K)
    (p : k[X]) (hp : p.degree ≠ 0) (hsep : p.Separable) :
    ∃ x, p.eval₂ f x = 0 
goal: ∃ x, Polynomial.eval₂ f x p = 0

full_name: IsSepClosed.exists_aeval_eq_zero
code: theorem exists_aeval_eq_zero [IsSepClosed K] [Algebra k K] (p : k[X])
    (hp : p.degree ≠ 0) (hsep : p.Separable) : ∃ x : K, aeval x p = 0 
goal: ∃ x, (Polynomial.aeval x) p = 0

full_name: IsSepClosed.of_exists_root
code: theorem of_exists_root (H : ∀ p : k[X], p.Monic → Irreducible p → Separable p → ∃ x, p.eval x = 0) :
    IsSepClosed k 
goal: IsSepClosed k

full_name: IsSepClosed.degree_eq_one_of_irreducible
code: theorem degree_eq_one_of_irreducible [IsSepClosed k] {p : k[X]}
    (hp : Irreducible p) (hsep : p.Separable) : p.degree = 1 
goal: p.degree = 1

full_name: IsSepClosed.algebraMap_surjective
code: theorem algebraMap_surjective
    [IsSepClosed k] [Algebra k K] [Algebra.IsSeparable k K] :
    Function.Surjective (algebraMap k K) 
goal: Function.Surjective ⇑(algebraMap k K)

full_name: IntermediateField.eq_bot_of_isSepClosed_of_isSeparable
code: /-- If `k` is separably closed, `K / k` is a field extension, `L / k` is an intermediate field
which is separable, then `L` is equal to `k`. A corollary of `IsSepClosed.algebraMap_surjective`. -/
theorem IntermediateField.eq_bot_of_isSepClosed_of_isSeparable [IsSepClosed k] [Algebra k K]
    (L : IntermediateField k K) [Algebra.IsSeparable k L] : L = ⊥ 
goal: L = ⊥

full_name: IsSepClosure.sep_closed
code: /-- Typeclass for an extension being a separable closure. -/
class IsSepClosure [Algebra k K] : Prop where
  sep_closed : IsSepClosed K
  separable : Algebra.IsSeparable k K
goal: IsSepClosed K

full_name: IsSepClosure
code: /-- Typeclass for an extension being a separable closure. -/
class IsSepClosure [Algebra k K] : Prop where
  sep_closed : IsSepClosed K
  separable : Algebra.IsSeparable k K
goal: Prop

full_name: IsSepClosure.separable
code: /-- Typeclass for an extension being a separable closure. -/
class IsSepClosure [Algebra k K] : Prop where
  sep_closed : IsSepClosed K
  separable : Algebra.IsSeparable k K
goal: Algebra.IsSeparable k K

full_name: IsSepClosure.self_of_isSepClosed
code: /-- A separably closed field is its separable closure. -/
instance IsSepClosure.self_of_isSepClosed [IsSepClosed k] : IsSepClosure k k 
goal: IsSepClosure k k

full_name: IsSepClosure.isAlgClosure_of_perfectField_top
code: /-- If `K` is perfect and is a separable closure of `k`,
then it is also an algebraic closure of `k`. -/
instance (priority := 100) IsSepClosure.isAlgClosure_of_perfectField_top
    [Algebra k K] [IsSepClosure k K] [PerfectField K] : IsAlgClosure k K 
goal: IsAlgClosure k K

full_name: IsSepClosure.isAlgClosure_of_perfectField
code: /-- If `k` is perfect, `K` is a separable closure of `k`,
then it is also an algebraic closure of `k`. -/
instance (priority := 100) IsSepClosure.isAlgClosure_of_perfectField
    [Algebra k K] [IsSepClosure k K] [PerfectField k] : IsAlgClosure k K 
goal: IsAlgClosure k K

full_name: IsSepClosure.of_isAlgClosure_of_perfectField
code: /-- If `k` is perfect, `K` is an algebraic closure of `k`,
then it is also a separable closure of `k`. -/
instance (priority := 100) IsSepClosure.of_isAlgClosure_of_perfectField
    [Algebra k K] [IsAlgClosure k K] [PerfectField k] : IsSepClosure k K 
goal: IsSepClosure k K

full_name: isSepClosure_iff
code: theorem isSepClosure_iff [Algebra k K] :
    IsSepClosure k K ↔ IsSepClosed K ∧ Algebra.IsSeparable k K 
goal: IsSepClosure k K ↔ IsSepClosed K ∧ Algebra.IsSeparable k K

full_name: IsSepClosure.isSeparable
code: instance isSeparable [Algebra k K] [IsSepClosure k K] : Algebra.IsSeparable k K 
goal: Algebra.IsSeparable k K

full_name: IsSepClosure.isGalois
code: instance (priority := 100) isGalois [Algebra k K] [IsSepClosure k K] : IsGalois k K 
goal: IsGalois k K

full_name: IsSepClosed.surjective_comp_algebraMap_of_isSeparable
code: theorem surjective_comp_algebraMap_of_isSeparable {E : Type*}
    [Field E] [Algebra K E] [Algebra L E] [IsScalarTower K L E] [Algebra.IsSeparable L E] :
    Function.Surjective fun φ : E →ₐ[K] M ↦ φ.comp (IsScalarTower.toAlgHom K L E) 
goal: Function.Surjective fun φ => φ.comp (IsScalarTower.toAlgHom K L E)

full_name: IsSepClosed.definition._@.Mathlib.FieldTheory.IsSepClosed._hyg.2180
code: /-- A (random) homomorphism from a separable extension L of K into a separably
  closed extension M of K. -/
noncomputable irreducible_def lift : L →ₐ[K] M 
goal: L →ₐ[K] M

full_name: IsSepClosed.lift
code: /-- A (random) homomorphism from a separable extension L of K into a separably
  closed extension M of K. -/
noncomputable irreducible_def lift : L →ₐ[K] M 
goal: L →ₐ[K] M

full_name: IsSepClosed.wrapped._@.Mathlib.FieldTheory.IsSepClosed._hyg.2180
code: /-- A (random) homomorphism from a separable extension L of K into a separably
  closed extension M of K. -/
noncomputable irreducible_def lift : L →ₐ[K] M 
goal: Subtype (Eq @IsSepClosed.definition✝)

full_name: IsSepClosed.lift_def
code: /-- A (random) homomorphism from a separable extension L of K into a separably
  closed extension M of K. -/
noncomputable irreducible_def lift : L →ₐ[K] M 
goal: IsSepClosed.lift = Classical.choice ⋯

full_name: IsSepClosure.equiv
code: /-- A (random) isomorphism between two separable closures of `K`. -/
noncomputable def equiv : L ≃ₐ[K] M 
goal: L ≃ₐ[K] M