Documentation

Mathlib.RingTheory.Algebraic.Integral

Algebraic elements and integral elements #

This file relates algebraic and integral elements of an algebra, by proving every integral element is algebraic and that every algebraic element over a field is integral.

Main results #

theorem IsIntegral.isAlgebraic {R : Type u} {A : Type v} [CommRing R] [Ring A] [Algebra R A] [Nontrivial R] {x : A} :

An integral element of an algebra is algebraic.

theorem isAlgebraic_iff_isIntegral {K : Type u} {A : Type v} [Field K] [Ring A] [Algebra K A] {x : A} :

An element of an algebra over a field is algebraic if and only if it is integral.

theorem IsAlgebraic.isIntegral {K : Type u} {A : Type v} [Field K] [Ring A] [Algebra K A] {x : A} :

Alias of the forward direction of isAlgebraic_iff_isIntegral.


An element of an algebra over a field is algebraic if and only if it is integral.

This used to be an alias of Algebra.isAlgebraic_iff_isIntegral but that would make Algebra.IsAlgebraic K A an explicit parameter instead of instance implicit.

theorem IsAlgebraic.of_finite (R : Type u_3) {A : Type u_4} [CommRing R] [Nontrivial R] [Ring A] [Algebra R A] (e : A) [Module.Finite R A] :
instance Algebra.IsAlgebraic.of_finite (R : Type u_3) (A : Type u_4) [CommRing R] [Nontrivial R] [Ring A] [Algebra R A] [Module.Finite R A] :

A field extension is algebraic if it is finite.

Stacks Tag 09GG (first part)

@[simp]
theorem transcendental_aeval_iff {K : Type u_1} {A : Type u_4} [Field K] [Ring A] [Algebra K A] {r : A} {f : Polynomial K} :

If K is a field, r : A and f : K[X], then Polynomial.aeval r f is transcendental over K if and only if r and f are both transcendental over K. See also Transcendental.aeval_of_transcendental and Transcendental.of_aeval.

theorem AlgHom.bijective {K : Type u_1} {L : Type u_2} [Field K] [Field L] [Algebra K L] [FiniteDimensional K L] (ϕ : L →ₐ[K] L) :
@[reducible, inline]
noncomputable abbrev algEquivEquivAlgHom (K : Type u_1) (L : Type u_2) [Field K] [Field L] [Algebra K L] [FiniteDimensional K L] :
(L ≃ₐ[K] L) ≃* (L →ₐ[K] L)

Bijection between algebra equivalences and algebra homomorphisms

Equations
Instances For
    theorem IsAlgebraic.exists_integral_multiple {R : Type u_1} {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] {z : A} (hz : IsAlgebraic R z) :
    ∃ (y : R), y 0 IsIntegral R (y z)
    @[deprecated IsAlgebraic.exists_integral_multiple (since := "2024-11-30")]
    theorem exists_integral_multiple {R : Type u_1} {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] {z : A} (hz : IsAlgebraic R z) :
    ∃ (y : R), y 0 IsIntegral R (y z)

    Alias of IsAlgebraic.exists_integral_multiple.

    theorem Algebra.IsAlgebraic.exists_integral_multiples (R : Type u_1) {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] [NoZeroDivisors R] [alg : Algebra.IsAlgebraic R A] (s : Finset A) :
    ∃ (y : R), y 0 zs, IsIntegral R (y z)
    theorem IsAlgebraic.of_smul_isIntegral {R : Type u_1} {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] {z : A} {y : R} (hy : ¬IsNilpotent y) (h : IsIntegral R (y z)) :
    theorem IsAlgebraic.of_smul {R : Type u_1} {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] {z : A} {y : R} (hy : y nonZeroDivisors R) (h : IsAlgebraic R (y z)) :
    theorem IsAlgebraic.iff_exists_smul_integral {R : Type u_1} {A : Type u_3} [CommRing R] [Ring A] [Algebra R A] {z : A} [IsReduced R] :
    IsAlgebraic R z ∃ (y : R), y 0 IsIntegral R (y z)

    The next theorem may fail if only R is assumed to be a domain but S is not: for example, let S = R[X] ⧸ (X² - X) and let A be the subalgebra of S[Y] generated by XY. A is algebraic over S because any element ∑ᵢ sᵢ(XY)ⁱ is a root of the polynomial (X - 1)(Z - s₀) in S[Z], because X(X - 1) = X² - X = 0 in S. However, XY is a transcendental element in A over R, because ∑ᵢ rᵢ(XY)ⁱ = 0 in S[Y] implies all rᵢXⁱ = 0 (i.e., r₀ = 0 and rᵢX = 0 for i > 0) in S, which implies rᵢ = 0 in R. This example is inspired by the comment https://mathoverflow.net/questions/482944/when-do-algebraic-elements-form-a-subalgebra#comment1257632_482944.

    theorem IsAlgebraic.restrictScalars_of_isIntegral (R : Type u_1) {S : Type u_2} {A : Type u_3} [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [NoZeroDivisors S] [int : Algebra.IsIntegral R S] {a : A} (h : IsAlgebraic S a) :
    theorem IsAlgebraic.restrictScalars (R : Type u_1) {S : Type u_2} {A : Type u_3} [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [NoZeroDivisors S] [Algebra.IsAlgebraic R S] {a : A} (h : IsAlgebraic S a) :
    theorem IsIntegral.trans_isAlgebraic (R : Type u_1) {S : Type u_2} {A : Type u_3} [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [NoZeroDivisors S] [alg : Algebra.IsAlgebraic R S] {a : A} (h : IsIntegral S a) :
    theorem IsAlgebraic.neg {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] {a : S} (ha : IsAlgebraic R a) :
    theorem IsAlgebraic.smul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] {a : S} (ha : IsAlgebraic R a) (r : R) :
    theorem IsAlgebraic.nsmul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] {a : S} (ha : IsAlgebraic R a) (n : ) :
    theorem IsAlgebraic.zsmul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] {a : S} (ha : IsAlgebraic R a) (n : ) :
    theorem IsAlgebraic.mul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [nzd : NoZeroDivisors R] {a b : S} (ha : IsAlgebraic R a) (hb : IsAlgebraic R b) :
    IsAlgebraic R (a * b)
    theorem IsAlgebraic.add {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [nzd : NoZeroDivisors R] {a b : S} (ha : IsAlgebraic R a) (hb : IsAlgebraic R b) :
    IsAlgebraic R (a + b)
    theorem IsAlgebraic.sub {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [nzd : NoZeroDivisors R] {a b : S} (ha : IsAlgebraic R a) (hb : IsAlgebraic R b) :
    IsAlgebraic R (a - b)
    theorem IsAlgebraic.pow {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [nzd : NoZeroDivisors R] {a : S} (ha : IsAlgebraic R a) (n : ) :
    IsAlgebraic R (a ^ n)
    theorem Algebra.IsAlgebraic.trans (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [NoZeroDivisors S] [Algebra.IsAlgebraic R S] [alg : Algebra.IsAlgebraic S A] :

    Transitivity of algebraicity for algebras over domains.

    Stacks Tag 09GJ

    @[deprecated Algebra.IsAlgebraic.trans (since := "2025-02-08")]
    theorem Algebra.IsAlgebraic.trans' (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [NoZeroDivisors S] [Algebra.IsAlgebraic R S] [alg : Algebra.IsAlgebraic S A] :

    Alias of Algebra.IsAlgebraic.trans.


    Transitivity of algebraicity for algebras over domains.

    Stacks Tag 09GJ

    def Subalgebra.algebraicClosure (R : Type u_1) (S : Type u_2) [CommRing R] [CommRing S] [Algebra R S] [IsDomain R] :

    If R is a domain and S is an arbitrary R-algebra, then the elements of S that are algebraic over R form a subalgebra.

    Equations
    Instances For
      theorem Algebra.isAlgebraic_adjoin_iff {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [IsDomain R] {s : Set S} :
      (adjoin R s).IsAlgebraic xs, IsAlgebraic R x
      theorem Algebra.isAlgebraic_adjoin_of_nonempty {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [NoZeroDivisors R] {s : Set S} (hs : s.Nonempty) :
      (adjoin R s).IsAlgebraic xs, IsAlgebraic R x

      In an algebra generated by a single algebraic element over a domain R, every element is algebraic. This may fail when R is not a domain: see https://mathoverflow.net/a/132192/ for an example.

      theorem IsAlgebraic.of_mul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] [NoZeroDivisors R] {y z : S} (hy : y nonZeroDivisors S) (alg_y : IsAlgebraic R y) (alg_yz : IsAlgebraic R (y * z)) :
      theorem Transcendental.extendScalars_of_isIntegral {R : Type u_1} (S : Type u_2) {A : Type u_3} [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {a : A} (ha : Transcendental R a) [NoZeroDivisors S] [Algebra.IsIntegral R S] :
      theorem Transcendental.extendScalars {R : Type u_1} (S : Type u_2) {A : Type u_3} [CommRing R] [CommRing S] [Ring A] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] {a : A} (ha : Transcendental R a) [NoZeroDivisors S] [Algebra.IsAlgebraic R S] :
      theorem Transcendental.integralClosure {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [Algebra R S] {a : S} (ha : Transcendental R a) [NoZeroDivisors S] :