Documentation

Mathlib.RingTheory.IntegralClosure.IsIntegralClosure.Basic

# Integral closure as a characteristic predicate #

We prove basic properties of IsIntegralClosure.

theorem IsIntegral.isUnit {R : Type u_1} {S : Type u_2} [Field R] [Ring S] [IsDomain S] [Algebra R S] {x : S} (int : IsIntegral R x) (h0 : x โ‰  0) :

A nonzero element in a domain integral over a field is a unit.

theorem isField_of_isIntegral_of_isField' {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain S] [Algebra R S] [Algebra.IsIntegral R S] (hR : IsField R) :

A commutative domain that is an integral algebra over a field is a field.

theorem IsIntegral.inv_mem {R : Type u_1} {S : Type u_2} [Field R] [DivisionRing S] [Algebra R S] {x : S} {A : Subalgebra R S} (int : IsIntegral R x) (hx : x โˆˆ A) :

The inverse of an integral element in a subalgebra of a division ring over a field also lies in that subalgebra.

theorem Algebra.IsIntegral.inv_mem {R : Type u_1} {S : Type u_2} [Field R] [DivisionRing S] [Algebra R S] {x : S} {A : Subalgebra R S} [Algebra.IsIntegral R โ†ฅA] (hx : x โˆˆ A) :

An integral subalgebra of a division ring over a field is closed under inverses.

theorem IsIntegral.inv {R : Type u_1} {S : Type u_2} [Field R] [DivisionRing S] [Algebra R S] {x : S} (int : IsIntegral R x) :

The inverse of an integral element in a division ring over a field is also integral.

theorem IsIntegral.mem_of_inv_mem {R : Type u_1} {S : Type u_2} [Field R] [DivisionRing S] [Algebra R S] {x : S} {A : Subalgebra R S} (int : IsIntegral R x) (inv_mem : xโปยน โˆˆ A) :
theorem Algebra.IsIntegral.finite {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] [Algebra.IsIntegral R A] [h' : FiniteType R A] :

The Kurosh problem asks to show that this is still true when A is not necessarily commutative and R is a field, but it has been solved in the negative. See https://arxiv.org/pdf/1706.02383.pdf for criteria for a finitely generated algebraic (= integral) algebra over a field to be finite dimensional.

This could be an instance, but we tend to go from Module.Finite to IsIntegral/IsAlgebraic, and making it an instance will cause the search to be complicated a lot.

theorem RingHom.IsIntegral.to_finite {R : Type u_1} {S : Type u_4} [CommRing R] [CommRing S] {f : R โ†’+* S} (h : f.IsIntegral) (h' : f.FiniteType) :

finite = integral + finite type

theorem Algebra.IsIntegral.adjoin {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {S : Set A} (hS : โˆ€ x โˆˆ S, IsIntegral R x) :
theorem Algebra.isIntegral_sup {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {S T : Subalgebra R A} :
Algebra.IsIntegral R โ†ฅ(S โŠ” T) โ†” Algebra.IsIntegral R โ†ฅS โˆง Algebra.IsIntegral R โ†ฅT
theorem Algebra.isIntegral_iSup {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {ฮน : Sort u_5} (S : ฮน โ†’ Subalgebra R A) :
Algebra.IsIntegral R โ†ฅ(iSup S) โ†” โˆ€ (i : ฮน), Algebra.IsIntegral R โ†ฅ(S i)
theorem integralClosure_map_algEquiv {R : Type u_1} {A : Type u_2} {S : Type u_4} [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] (f : A โ‰ƒโ‚[R] S) :

Mapping an integral closure along an AlgEquiv gives the integral closure.

def AlgHom.mapIntegralClosure {R : Type u_1} {A : Type u_2} {S : Type u_4} [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] (f : A โ†’โ‚[R] S) :
โ†ฅ(integralClosure R A) โ†’โ‚[R] โ†ฅ(integralClosure R S)

An AlgHom between two rings restrict to an AlgHom between the integral closures inside them.

Equations
    Instances For
      @[simp]
      theorem AlgHom.coe_mapIntegralClosure {R : Type u_1} {A : Type u_2} {S : Type u_4} [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] (f : A โ†’โ‚[R] S) (x : โ†ฅ(integralClosure R A)) :
      โ†‘(f.mapIntegralClosure x) = f โ†‘x
      def AlgEquiv.mapIntegralClosure {R : Type u_1} {A : Type u_2} {S : Type u_4} [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] (f : A โ‰ƒโ‚[R] S) :
      โ†ฅ(integralClosure R A) โ‰ƒโ‚[R] โ†ฅ(integralClosure R S)

      An AlgEquiv between two rings restrict to an AlgEquiv between the integral closures inside them.

      Equations
        Instances For
          @[simp]
          theorem AlgEquiv.coe_mapIntegralClosure {R : Type u_1} {A : Type u_2} {S : Type u_4} [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] (f : A โ‰ƒโ‚[R] S) (x : โ†ฅ(integralClosure R A)) :
          โ†‘(f.mapIntegralClosure x) = f โ†‘x
          theorem integralClosure.isIntegral {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] (x : โ†ฅ(integralClosure R A)) :
          theorem IsIntegral.of_mul_unit {R : Type u_1} {B : Type u_3} [CommRing R] [Ring B] [Algebra R B] {x y : B} {r : R} (hr : (algebraMap R B) r * y = 1) (hx : IsIntegral R (x * y)) :
          theorem RingHom.IsIntegralElem.of_mul_unit {R : Type u_1} {S : Type u_4} [CommRing R] [CommRing S] (f : R โ†’+* S) (x y : S) (r : R) (hr : f r * y = 1) (hx : f.IsIntegralElem (x * y)) :
          theorem IsIntegral.of_mem_closure' {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] (G : Set A) (hG : โˆ€ x โˆˆ G, IsIntegral R x) (x : A) :

          Generalization of IsIntegral.of_mem_closure bootstrapped up from that lemma

          theorem IsIntegral.of_mem_closure'' {R : Type u_1} [CommRing R] {S : Type u_5} [CommRing S] {f : R โ†’+* S} (G : Set S) (hG : โˆ€ x โˆˆ G, f.IsIntegralElem x) (x : S) :
          theorem IsIntegral.pow {R : Type u_1} {B : Type u_3} [CommRing R] [Ring B] [Algebra R B] {x : B} (h : IsIntegral R x) (n : โ„•) :
          IsIntegral R (x ^ n)
          theorem IsIntegral.nsmul {R : Type u_1} {B : Type u_3} [CommRing R] [Ring B] [Algebra R B] {x : B} (h : IsIntegral R x) (n : โ„•) :
          theorem IsIntegral.zsmul {R : Type u_1} {B : Type u_3} [CommRing R] [Ring B] [Algebra R B] {x : B} (h : IsIntegral R x) (n : โ„ค) :
          theorem IsIntegral.multiset_prod {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {s : Multiset A} (h : โˆ€ x โˆˆ s, IsIntegral R x) :
          theorem IsIntegral.multiset_sum {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {s : Multiset A} (h : โˆ€ x โˆˆ s, IsIntegral R x) :
          theorem IsIntegral.prod {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {ฮฑ : Type u_5} {s : Finset ฮฑ} (f : ฮฑ โ†’ A) (h : โˆ€ x โˆˆ s, IsIntegral R (f x)) :
          IsIntegral R (โˆ x โˆˆ s, f x)
          theorem IsIntegral.sum {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {ฮฑ : Type u_5} {s : Finset ฮฑ} (f : ฮฑ โ†’ A) (h : โˆ€ x โˆˆ s, IsIntegral R (f x)) :
          IsIntegral R (โˆ‘ x โˆˆ s, f x)
          theorem IsIntegral.det {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {n : Type u_5} [Fintype n] [DecidableEq n] {M : Matrix n n A} (h : โˆ€ (i j : n), IsIntegral R (M i j)) :
          @[simp]
          theorem IsIntegral.pow_iff {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {x : A} {n : โ„•} (hn : 0 < n) :
          theorem Algebra.IsPushout.isIntegral' (R : Type u_1) (A : Type u_2) (S : Type u_4) [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] [int : Algebra.IsIntegral R S] (SA : Type u_5) [CommRing SA] [Algebra R SA] [Algebra S SA] [Algebra A SA] [IsScalarTower R S SA] [IsScalarTower R A SA] [IsPushout R A S SA] :
          theorem Algebra.IsPushout.isIntegral (R : Type u_1) (A : Type u_2) (S : Type u_4) [CommRing R] [CommRing A] [CommRing S] [Algebra R A] [Algebra R S] [int : Algebra.IsIntegral R S] (SA : Type u_5) [CommRing SA] [Algebra R SA] [Algebra S SA] [Algebra A SA] [IsScalarTower R S SA] [IsScalarTower R A SA] [h : IsPushout R S A SA] :
          instance instIsIntegralMvPolynomial (R : Type u_1) (S : Type u_4) [CommRing R] [CommRing S] [Algebra R S] [int : Algebra.IsIntegral R S] {ฯƒ : Type u_6} :
          theorem RingHom.isIntegralElem_leadingCoeff_mul {R : Type u_1} {S : Type u_4} [CommRing R] [CommRing S] (f : R โ†’+* S) (p : Polynomial R) (x : S) (h : Polynomial.evalโ‚‚ f x p = 0) :

          Given a p : R[X] and a x : S such that p.evalโ‚‚ f x = 0, f p.leadingCoeff * x is integral.

          theorem isIntegral_leadingCoeff_smul {R : Type u_1} {S : Type u_4} [CommRing R] [CommRing S] (p : Polynomial R) (x : S) [Algebra R S] (h : (Polynomial.aeval x) p = 0) :

          Given a p : R[X] and a root x : S, then p.leadingCoeff โ€ข x : S is integral over R.

          theorem IsIntegralClosure.isIntegral (R : Type u_1) {A : Type u_2} (B : Type u_3) [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] [Algebra R A] [IsScalarTower R A B] (x : A) :
          noncomputable def IsIntegralClosure.mk' {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (x : B) (hx : IsIntegral R x) :
          A

          If x : B is integral over R, then it is an element of the integral closure of R in B.

          Equations
            Instances For
              @[simp]
              theorem IsIntegralClosure.algebraMap_mk' {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (x : B) (hx : IsIntegral R x) :
              (algebraMap A B) (mk' A x hx) = x
              @[simp]
              theorem IsIntegralClosure.mk'_one {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (h : IsIntegral R 1 := โ‹ฏ) :
              mk' A 1 h = 1
              @[simp]
              theorem IsIntegralClosure.mk'_zero {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (h : IsIntegral R 0 := โ‹ฏ) :
              mk' A 0 h = 0
              @[simp]
              theorem IsIntegralClosure.mk'_add {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (x y : B) (hx : IsIntegral R x) (hy : IsIntegral R y) :
              mk' A (x + y) โ‹ฏ = mk' A x hx + mk' A y hy
              @[simp]
              theorem IsIntegralClosure.mk'_mul {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (x y : B) (hx : IsIntegral R x) (hy : IsIntegral R y) :
              mk' A (x * y) โ‹ฏ = mk' A x hx * mk' A y hy
              @[simp]
              theorem IsIntegralClosure.mk'_algebraMap {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] [Algebra R A] [IsScalarTower R A B] (x : R) (h : IsIntegral R ((algebraMap R B) x) := โ‹ฏ) :
              mk' A ((algebraMap R B) x) h = (algebraMap R A) x
              theorem IsIntegralClosure.isField {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] [Algebra R A] [IsScalarTower R A B] [IsDomain A] (hR : IsField R) :

              The integral closure of a field in a commutative domain is always a field.

              noncomputable def IsIntegralClosure.lift (R : Type u_1) (A : Type u_2) (B : Type u_3) [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] {S : Type u_4} [CommRing S] [Algebra R S] [Algebra S B] [IsScalarTower R S B] [Algebra R A] [IsScalarTower R A B] [isIntegral : Algebra.IsIntegral R S] :

              If B / S / R is a tower of ring extensions where S is integral over R, then S maps (uniquely) into an integral closure B / A / R.

              Equations
                Instances For
                  @[simp]
                  theorem IsIntegralClosure.algebraMap_lift (R : Type u_1) (A : Type u_2) (B : Type u_3) [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] {S : Type u_4} [CommRing S] [Algebra R S] [Algebra S B] [IsScalarTower R S B] [Algebra R A] [IsScalarTower R A B] [isIntegral : Algebra.IsIntegral R S] (x : S) :
                  (algebraMap A B) ((lift R A B) x) = (algebraMap S B) x
                  noncomputable def IsIntegralClosure.equiv (R : Type u_1) (A : Type u_2) (B : Type u_3) [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (A' : Type u_4) [CommRing A'] [Algebra A' B] [IsIntegralClosure A' R B] [Algebra R A] [Algebra R A'] [IsScalarTower R A B] [IsScalarTower R A' B] :

                  Integral closures are all isomorphic to each other.

                  Equations
                    Instances For
                      @[simp]
                      theorem IsIntegralClosure.algebraMap_equiv (R : Type u_1) (A : Type u_2) (B : Type u_3) [CommRing R] [CommRing A] [CommRing B] [Algebra R B] [Algebra A B] [IsIntegralClosure A R B] (A' : Type u_4) [CommRing A'] [Algebra A' B] [IsIntegralClosure A' R B] [Algebra R A] [Algebra R A'] [IsScalarTower R A B] [IsScalarTower R A' B] (x : A) :
                      (algebraMap A' B) ((equiv R A B A') x) = (algebraMap A B) x
                      theorem isIntegral_trans {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommRing R] [CommRing A] [Ring B] [Algebra A B] [Algebra R B] [Algebra R A] [IsScalarTower R A B] [Algebra.IsIntegral R A] (x : B) (hx : IsIntegral A x) :

                      If A is an R-algebra all of whose elements are integral over R, and x is an element of an A-algebra that is integral over A, then x is integral over R.

                      theorem Algebra.IsIntegral.trans {R : Type u_1} (A : Type u_2) {B : Type u_3} [CommRing R] [CommRing A] [Ring B] [Algebra A B] [Algebra R B] [Algebra R A] [IsScalarTower R A B] [Algebra.IsIntegral R A] [Algebra.IsIntegral A B] :

                      If A is an R-algebra all of whose elements are integral over R, and B is an A-algebra all of whose elements are integral over A, then all elements of B are integral over R.

                      theorem RingHom.IsIntegral.trans {R : Type u_1} {S : Type u_4} {T : Type u_5} [CommRing R] [CommRing S] [CommRing T] (f : R โ†’+* S) (g : S โ†’+* T) (hf : f.IsIntegral) (hg : g.IsIntegral) :
                      theorem IsIntegralClosure.tower_top {R : Type u_1} {A : Type u_2} [CommRing R] [CommRing A] [Algebra R A] {B : Type u_6} {C : Type u_7} [CommSemiring C] [CommRing B] [Algebra R B] [Algebra A B] [Algebra C B] [IsScalarTower R A B] [IsIntegralClosure C R B] [Algebra.IsIntegral R A] :

                      If R โ†’ A โ†’ B is an algebra tower, C is the integral closure of R in B and A is integral over R, then C is the integral closure of A in B.

                      theorem IsIntegral.tower_bot {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommRing R] [CommRing A] [Ring B] [Algebra A B] [Algebra R B] [Algebra R A] [IsScalarTower R A B] (H : Function.Injective โ‡‘(algebraMap A B)) {x : A} (h : IsIntegral R ((algebraMap A B) x)) :

                      If R โ†’ A โ†’ B is an algebra tower with A โ†’ B injective, then if the entire tower is an integral extension so is R โ†’ A

                      theorem RingHom.IsIntegral.tower_bot {R : Type u_1} {S : Type u_4} {T : Type u_5} [CommRing R] [CommRing S] [CommRing T] (f : R โ†’+* S) (g : S โ†’+* T) (hg : Function.Injective โ‡‘g) (hfg : (g.comp f).IsIntegral) :
                      theorem Algebra.IsIntegral.tower_bot {R : Type u_1} {S : Type u_4} (T : Type u_5) [CommRing R] [CommRing S] [CommRing T] [IsDomain S] [Algebra R S] [Algebra R T] [Algebra S T] [Module.IsTorsionFree S T] [Nontrivial T] [IsScalarTower R S T] [h : Algebra.IsIntegral R T] :

                      Let T / S / R be a tower of algebras, T is non-trivial and is a torsion free S-module, then if T is an integral R-algebra, then S is an integral R-algebra.

                      theorem IsIntegral.tower_bot_of_field {R : Type u_6} {A : Type u_7} {B : Type u_8} [CommRing R] [Field A] [Ring B] [Nontrivial B] [Algebra R A] [Algebra A B] [Algebra R B] [IsScalarTower R A B] {x : A} (h : IsIntegral R ((algebraMap A B) x)) :
                      theorem RingHom.isIntegralElem.of_comp {R : Type u_1} {S : Type u_4} {T : Type u_5} [CommRing R] [CommRing S] [CommRing T] (f : R โ†’+* S) (g : S โ†’+* T) {x : T} (h : (g.comp f).IsIntegralElem x) :
                      theorem RingHom.IsIntegral.tower_top {R : Type u_1} {S : Type u_4} {T : Type u_5} [CommRing R] [CommRing S] [CommRing T] (f : R โ†’+* S) (g : S โ†’+* T) (h : (g.comp f).IsIntegral) :
                      theorem Algebra.IsIntegral.tower_top (R : Type u_1) {S : Type u_4} {T : Type u_5} [CommRing R] [CommRing S] [CommRing T] [Algebra R S] [Algebra R T] [Algebra S T] [IsScalarTower R S T] [h : Algebra.IsIntegral R T] :

                      Let T / S / R be a tower of algebras, T is an integral R-algebra, then it is integral as an S-algebra.

                      theorem RingHom.IsIntegral.quotient {R : Type u_1} {S : Type u_4} [CommRing R] [CommRing S] (f : R โ†’+* S) {I : Ideal S} (hf : f.IsIntegral) :
                      theorem RingHom.IsIntegral.isLocalHom {R : Type u_6} {S : Type u_7} [CommRing R] [CommRing S] {f : R โ†’+* S} (hf : f.IsIntegral) (inj : Function.Injective โ‡‘f) :
                      theorem isField_of_isIntegral_of_isField {R : Type u_6} {S : Type u_7} [CommRing R] [CommRing S] [Algebra R S] [Algebra.IsIntegral R S] (hRS : Function.Injective โ‡‘(algebraMap R S)) (hS : IsField S) :

                      If the integral extension R โ†’ S is injective, and S is a field, then R is also a field.

                      theorem roots_mem_integralClosure {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain S] [Algebra R S] {f : Polynomial R} (hf : f.Monic) {a : S} (ha : a โˆˆ f.aroots S) :