Documentation

Mathlib.FieldTheory.IsAlgClosed.Basic

Algebraically Closed Field #

In this file we define the typeclass for algebraically closed fields and algebraic closures, and prove some of their properties.

Main Definitions #

Tags #

algebraic closure, algebraically closed

Main results #

class IsAlgClosed (k : Type u) [Field k] :

An algebraically closed field is one where every polynomial splits. Equivalently, all non-constant polynomials have a root. See IsAlgClosed.exists_root and IsAlgClosed.of_exists_root.

Instances
    @[deprecated IsAlgClosed.splits (since := "2025-12-09")]
    theorem IsAlgClosed.factors {k : Type u} {inst✝ : Field k} [self : IsAlgClosed k] (p : Polynomial k) :

    Alias of IsAlgClosed.splits.

    @[deprecated "This is a special case of `IsAlgClosed.splits`." (since := "2025-12-09")]
    theorem IsAlgClosed.splits_codomain {k : Type u_1} {K : Type u_2} [Field k] [IsAlgClosed k] [CommRing K] {f : K β†’+* k} (p : Polynomial K) :

    Every polynomial splits in the field extension f : K β†’+* k if k is algebraically closed.

    See also IsAlgClosed.splits_domain for the case where K is algebraically closed.

    theorem IsAlgClosed.splits_domain {k : Type u_1} {K : Type u_2} [Field k] [IsAlgClosed k] [Field K] {f : k β†’+* K} (p : Polynomial k) :

    Every polynomial splits in the field extension f : K β†’+* k if K is algebraically closed.

    theorem IsAlgClosed.exists_root {k : Type u} [Field k] [IsAlgClosed k] (p : Polynomial k) (hp : p.degree β‰  0) :
    βˆƒ (x : k), p.IsRoot x

    If k is algebraically closed, then every nonconstant polynomial has a root.

    theorem IsAlgClosed.exists_pow_nat_eq {k : Type u} [Field k] [IsAlgClosed k] (x : k) {n : β„•} (hn : 0 < n) :
    βˆƒ (z : k), z ^ n = x
    theorem IsAlgClosed.exists_eq_mul_self {k : Type u} [Field k] [IsAlgClosed k] (x : k) :
    βˆƒ (z : k), x = z * z
    theorem IsAlgClosed.exists_evalβ‚‚_eq_zero_of_injective {k : Type u} [Field k] {R : Type u_1} [Semiring R] [IsAlgClosed k] (f : R β†’+* k) (hf : Function.Injective ⇑f) (p : Polynomial R) (hp : p.degree β‰  0) :
    βˆƒ (x : k), Polynomial.evalβ‚‚ f x p = 0
    theorem IsAlgClosed.exists_evalβ‚‚_eq_zero {k : Type u} [Field k] {R : Type u_1} [Ring R] [IsSimpleRing R] [IsAlgClosed k] (f : R β†’+* k) (p : Polynomial R) (hp : p.degree β‰  0) :
    βˆƒ (x : k), Polynomial.evalβ‚‚ f x p = 0
    theorem IsAlgClosed.exists_aeval_eq_zero_of_injective (k : Type u) [Field k] {R : Type u_1} [CommSemiring R] [IsAlgClosed k] [Algebra R k] (hinj : Function.Injective ⇑(algebraMap R k)) (p : Polynomial R) (hp : p.degree β‰  0) :
    βˆƒ (x : k), (Polynomial.aeval x) p = 0
    theorem IsAlgClosed.exists_aeval_eq_zero (k : Type u) [Field k] {R : Type u_1} [CommSemiring R] [IsAlgClosed k] [Algebra R k] [FaithfulSMul R k] (p : Polynomial R) (hp : p.degree β‰  0) :
    βˆƒ (x : k), (Polynomial.aeval x) p = 0
    theorem IsAlgClosed.of_exists_root (k : Type u) [Field k] (H : βˆ€ (p : Polynomial k), p.Monic β†’ Irreducible p β†’ βˆƒ (x : k), Polynomial.eval x p = 0) :

    If every nonconstant polynomial over k has a root, then k is algebraically closed.

    If k is algebraically closed, then every irreducible polynomial over k is linear.

    If k is algebraically closed, K / k is a field extension, L / k is an intermediate field which is algebraic, then L is equal to k. A corollary of IsAlgClosed.algebraMap_surjective_of_isAlgebraic.

    class IsAlgClosure (R : Type u) (K : Type v) [CommRing R] [Field K] [Algebra R K] [Module.IsTorsionFree R K] :

    Typeclass for an extension being an algebraic closure.

    Instances
      @[instance 100]
      instance IsAlgClosure.normal (R : Type u_1) (K : Type u_2) [Field R] [Field K] [Algebra R K] [IsAlgClosure R K] :
      Normal R K
      @[instance 100]
      instance IsAlgClosure.separable (R : Type u_1) (K : Type u_2) [Field R] [Field K] [Algebra R K] [IsAlgClosure R K] [CharZero R] :
      theorem IsAlgClosure.of_splits {R : Type u_1} {K : Type u_2} [CommRing R] [IsDomain R] [Field K] [Algebra R K] [Algebra.IsIntegral R K] [Module.IsTorsionFree R K] (h : βˆ€ (p : Polynomial R), p.Monic β†’ Irreducible p β†’ (Polynomial.map (algebraMap R K) p).Splits) :
      theorem IsAlgClosed.surjective_restrictDomain_of_isAlgebraic {K : Type u} [Field K] {L : Type v} {M : Type w} [Field L] [Algebra K L] [Field M] [Algebra K M] [IsAlgClosed M] {E : Type u_1} [Field E] [Algebra K E] [Algebra L E] [IsScalarTower K L E] [Algebra.IsAlgebraic L E] :

      If E/L/K is a tower of field extensions with E/L algebraic, and if M is an algebraically closed extension of K, then any embedding of L/K into M/K extends to an embedding of E/K. Known as the extension lemma in https://math.stackexchange.com/a/687914.

      noncomputable def IsAlgClosed.lift {M : Type w} [Field M] [IsAlgClosed M] {R : Type u} [CommRing R] [IsDomain R] {S : Type v} [CommRing S] [IsDomain S] [Algebra R S] [Algebra R M] [Module.IsTorsionFree R S] [Module.IsTorsionFree R M] [Algebra.IsAlgebraic R S] :

      A (random) homomorphism from an algebraic extension of R into an algebraically closed extension of R.

      Equations
        Instances For
          @[instance 100]
          instance IsAlgClosed.perfectRing (k : Type u) [Field k] (p : β„•) [Fact (Nat.Prime p)] [CharP k p] [IsAlgClosed k] :
          @[instance 500]

          Algebraically closed fields are infinite since Xⁿ⁺¹ - 1 is separable when #K = n

          noncomputable def IsAlgClosure.equiv (R : Type u) [CommRing R] [IsDomain R] (L : Type v) (M : Type w) [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra R L] [Module.IsTorsionFree R L] [IsAlgClosure R L] :

          A (random) isomorphism between two algebraic closures of R.

          Equations
            Instances For
              theorem IsAlgClosure.ofAlgebraic (K : Type u_1) (J : Type u_2) (L : Type v) [Field K] [Field J] [Field L] [Algebra K J] [Algebra J L] [IsAlgClosure J L] [Algebra K L] [IsScalarTower K J L] [Algebra.IsAlgebraic K J] :

              If J is an algebraic extension of K and L is an algebraic closure of J, then it is also an algebraic closure of K.

              noncomputable def IsAlgClosure.equivOfAlgebraic' (R : Type u) (S : Type u_3) (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [Algebra R S] [Algebra R L] [IsScalarTower R S L] [IsDomain R] [IsDomain S] [Module.IsTorsionFree R S] [Algebra.IsAlgebraic R L] :

              A (random) isomorphism between an algebraic closure of R and an algebraic closure of an algebraic extension of R

              Equations
                Instances For
                  noncomputable def IsAlgClosure.equivOfAlgebraic (K : Type u_1) (J : Type u_2) (L : Type v) (M : Type w) [Field K] [Field J] [Field L] [Field M] [Algebra K M] [IsAlgClosure K M] [Algebra K J] [Algebra J L] [IsAlgClosure J L] [Algebra K L] [IsScalarTower K J L] [Algebra.IsAlgebraic K J] :

                  A (random) isomorphism between an algebraic closure of K and an algebraic closure of an algebraic extension of K

                  Equations
                    Instances For
                      noncomputable def IsAlgClosure.equivOfEquivAux {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) :

                      Used in the definition of equivOfEquiv

                      Equations
                        Instances For
                          noncomputable def IsAlgClosure.equivOfEquiv {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) :

                          Algebraic closure of isomorphic fields are isomorphic

                          Equations
                            Instances For
                              @[simp]
                              theorem IsAlgClosure.equivOfEquiv_comp_algebraMap {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) :
                              (↑(equivOfEquiv L M hSR)).comp (algebraMap S L) = (algebraMap R M).comp ↑hSR
                              @[simp]
                              theorem IsAlgClosure.equivOfEquiv_algebraMap {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) (s : S) :
                              (equivOfEquiv L M hSR) ((algebraMap S L) s) = (algebraMap R M) (hSR s)
                              @[simp]
                              theorem IsAlgClosure.equivOfEquiv_symm_algebraMap {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) (r : R) :
                              (equivOfEquiv L M hSR).symm ((algebraMap R M) r) = (algebraMap S L) (hSR.symm r)
                              @[simp]
                              theorem IsAlgClosure.equivOfEquiv_symm_comp_algebraMap {R : Type u} {S : Type u_3} (L : Type v) (M : Type w) [CommRing R] [CommRing S] [Field L] [Field M] [Algebra R M] [Module.IsTorsionFree R M] [IsAlgClosure R M] [Algebra S L] [Module.IsTorsionFree S L] [IsAlgClosure S L] [IsDomain R] [IsDomain S] (hSR : S ≃+* R) :
                              (↑(equivOfEquiv L M hSR).symm).comp (algebraMap R M) = (algebraMap S L).comp ↑hSR.symm
                              theorem Algebra.IsAlgebraic.range_eval_eq_rootSet_minpoly {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] [IsAlgClosed A] (x : K) :
                              (Set.range fun (ψ : K →ₐ[F] A) => ψ x) = (minpoly F x).rootSet A

                              Let A be an algebraically closed field and let x ∈ K, with K/F an algebraic extension of fields. Then the images of x by the F-algebra morphisms from K to A are exactly the roots in A of the minimal polynomial of x over F.

                              def IntermediateField.algHomEquivAlgHomOfSplits {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : IntermediateField F A) (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F β†₯L) (minpoly F x)).Splits) :
                              (K →ₐ[F] β†₯L) ≃ (K →ₐ[F] A)

                              All F-embeddings of a field K into another field A factor through any intermediate field of A/F in which the minimal polynomial of elements of K splits.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem IntermediateField.algHomEquivAlgHomOfSplits_symm_apply {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : IntermediateField F A) (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F β†₯L) (minpoly F x)).Splits) (f : K →ₐ[F] A) :
                                  @[simp]
                                  theorem IntermediateField.algHomEquivAlgHomOfSplits_apply {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : IntermediateField F A) (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F β†₯L) (minpoly F x)).Splits) (Ο†β‚‚ : K →ₐ[F] β†₯L) :
                                  (algHomEquivAlgHomOfSplits A L hL) Ο†β‚‚ = L.val.comp Ο†β‚‚
                                  theorem IntermediateField.algHomEquivAlgHomOfSplits_apply_apply {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : IntermediateField F A) (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F β†₯L) (minpoly F x)).Splits) (f : K →ₐ[F] β†₯L) (x : K) :
                                  ((algHomEquivAlgHomOfSplits A L hL) f) x = (algebraMap (β†₯L) A) (f x)
                                  noncomputable def Algebra.IsAlgebraic.algHomEquivAlgHomOfSplits {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : Type u_4) [Field L] [Algebra F L] [Algebra L A] [IsScalarTower F L A] (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F L) (minpoly F x)).Splits) :

                                  All F-embeddings of a field K into another field A factor through any subextension of A/F in which the minimal polynomial of elements of K splits.

                                  Equations
                                    Instances For
                                      theorem Algebra.IsAlgebraic.algHomEquivAlgHomOfSplits_apply_apply {F : Type u_1} {K : Type u_2} (A : Type u_3) [Field F] [Field K] [Field A] [Algebra F K] [Algebra F A] [Algebra.IsAlgebraic F K] (L : Type u_4) [Field L] [Algebra F L] [Algebra L A] [IsScalarTower F L A] (hL : βˆ€ (x : K), (Polynomial.map (algebraMap F L) (minpoly F x)).Splits) (f : K →ₐ[F] L) (x : K) :
                                      ((algHomEquivAlgHomOfSplits A L hL) f) x = (algebraMap L A) (f x)
                                      theorem Polynomial.isRoot_of_isRoot_iff_dvd_derivative_mul {K : Type u_1} [Field K] [IsAlgClosed K] [CharZero K] {f g : Polynomial K} (hf0 : f β‰  0) :
                                      (βˆ€ (x : K), f.IsRoot x β†’ g.IsRoot x) ↔ f ∣ derivative f * g

                                      Over an algebraically closed field of characteristic zero a necessary and sufficient condition for the set of roots of a nonzero polynomial f to be a subset of the set of roots of g is that f divides f.derivative * g. Over an integral domain, this is a sufficient but not necessary condition. See isRoot_of_isRoot_of_dvd_derivative_mul