ring_theory.ring_hom.integralMathlib.RingTheory.RingHom.Integral

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -26,7 +26,7 @@ open TensorProduct Algebra.TensorProduct
 
 #print RingHom.isIntegral_stableUnderComposition /-
 theorem isIntegral_stableUnderComposition : StableUnderComposition fun R S _ _ f => f.is_integral :=
-  by introv R hf hg; exact RingHom.isIntegral_trans _ _ hf hg
+  by introv R hf hg; exact RingHom.IsIntegral.trans _ _ hf hg
 #align ring_hom.is_integral_stable_under_composition RingHom.isIntegral_stableUnderComposition
 -/
 
@@ -37,7 +37,7 @@ theorem isIntegral_respectsIso : RespectsIso fun R S _ _ f => f.is_integral :=
   introv x
   skip
   rw [← e.apply_symm_apply x]
-  apply RingHom.is_integral_map
+  apply RingHom.isIntegralElem_map
 #align ring_hom.is_integral_respects_iso RingHom.isIntegral_respectsIso
 -/
 
@@ -50,7 +50,7 @@ theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun R S _ _ f =
   apply TensorProduct.induction_on x
   · apply isIntegral_zero
   · intro x y; exact IsIntegral.tmul x (h y)
-  · intro x y hx hy; exact isIntegral_add _ hx hy
+  · intro x y hx hy; exact IsIntegral.add _ hx hy
 #align ring_hom.is_integral_stable_under_base_change RingHom.isIntegral_stableUnderBaseChange
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
-import Mathbin.RingTheory.RingHomProperties
-import Mathbin.RingTheory.IntegralClosure
+import RingTheory.RingHomProperties
+import RingTheory.IntegralClosure
 
 #align_import ring_theory.ring_hom.integral from "leanprover-community/mathlib"@"d07a9c875ed7139abfde6a333b2be205c5bd404e"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module ring_theory.ring_hom.integral
-! leanprover-community/mathlib commit d07a9c875ed7139abfde6a333b2be205c5bd404e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.RingHomProperties
 import Mathbin.RingTheory.IntegralClosure
 
+#align_import ring_theory.ring_hom.integral from "leanprover-community/mathlib"@"d07a9c875ed7139abfde6a333b2be205c5bd404e"
+
 /-!
 
 # The meta properties of integral ring homomorphisms.
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 
 ! This file was ported from Lean 3 source module ring_theory.ring_hom.integral
-! leanprover-community/mathlib commit a7c017d750512a352b623b1824d75da5998457d0
+! leanprover-community/mathlib commit d07a9c875ed7139abfde6a333b2be205c5bd404e
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.RingTheory.IntegralClosure
 
 # The meta properties of integral ring homomorphisms.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 -/
 
 
Diff
@@ -24,10 +24,13 @@ open scoped TensorProduct
 
 open TensorProduct Algebra.TensorProduct
 
+#print RingHom.isIntegral_stableUnderComposition /-
 theorem isIntegral_stableUnderComposition : StableUnderComposition fun R S _ _ f => f.is_integral :=
   by introv R hf hg; exact RingHom.isIntegral_trans _ _ hf hg
 #align ring_hom.is_integral_stable_under_composition RingHom.isIntegral_stableUnderComposition
+-/
 
+#print RingHom.isIntegral_respectsIso /-
 theorem isIntegral_respectsIso : RespectsIso fun R S _ _ f => f.is_integral :=
   by
   apply is_integral_stable_under_composition.respects_iso
@@ -36,7 +39,9 @@ theorem isIntegral_respectsIso : RespectsIso fun R S _ _ f => f.is_integral :=
   rw [← e.apply_symm_apply x]
   apply RingHom.is_integral_map
 #align ring_hom.is_integral_respects_iso RingHom.isIntegral_respectsIso
+-/
 
+#print RingHom.isIntegral_stableUnderBaseChange /-
 theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun R S _ _ f => f.is_integral :=
   by
   refine' stable_under_base_change.mk _ is_integral_respects_iso _
@@ -47,6 +52,7 @@ theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun R S _ _ f =
   · intro x y; exact IsIntegral.tmul x (h y)
   · intro x y hx hy; exact isIntegral_add _ hx hy
 #align ring_hom.is_integral_stable_under_base_change RingHom.isIntegral_stableUnderBaseChange
+-/
 
 end RingHom
 
Diff
@@ -20,7 +20,7 @@ import Mathbin.RingTheory.IntegralClosure
 
 namespace RingHom
 
-open TensorProduct
+open scoped TensorProduct
 
 open TensorProduct Algebra.TensorProduct
 
Diff
@@ -25,9 +25,7 @@ open TensorProduct
 open TensorProduct Algebra.TensorProduct
 
 theorem isIntegral_stableUnderComposition : StableUnderComposition fun R S _ _ f => f.is_integral :=
-  by
-  introv R hf hg
-  exact RingHom.isIntegral_trans _ _ hf hg
+  by introv R hf hg; exact RingHom.isIntegral_trans _ _ hf hg
 #align ring_hom.is_integral_stable_under_composition RingHom.isIntegral_stableUnderComposition
 
 theorem isIntegral_respectsIso : RespectsIso fun R S _ _ f => f.is_integral :=
@@ -46,10 +44,8 @@ theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun R S _ _ f =
   skip
   apply TensorProduct.induction_on x
   · apply isIntegral_zero
-  · intro x y
-    exact IsIntegral.tmul x (h y)
-  · intro x y hx hy
-    exact isIntegral_add _ hx hy
+  · intro x y; exact IsIntegral.tmul x (h y)
+  · intro x y hx hy; exact isIntegral_add _ hx hy
 #align ring_hom.is_integral_stable_under_base_change RingHom.isIntegral_stableUnderBaseChange
 
 end RingHom
Diff
@@ -4,11 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 
 ! This file was ported from Lean 3 source module ring_theory.ring_hom.integral
-! leanprover-community/mathlib commit b5aecf07a179c60b6b37c1ac9da952f3b565c785
+! leanprover-community/mathlib commit a7c017d750512a352b623b1824d75da5998457d0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.RingHomProperties
+import Mathbin.RingTheory.IntegralClosure
 
 /-!
 

Changes in mathlib4

mathlib3
mathlib4
chore(IntegralClosure): noncommutative generalizations and golfs (#8406)

Zulip

Initially I just wanted to add more dot notations for IsIntegral and IsAlgebraic (done in #8437); then I noticed near-duplicates Algebra.isIntegral_of_finite [Field R] [Ring A] and RingHom.IsIntegral.of_finite [CommRing R] [CommRing A] so I went on to generalize the latter to cover the former, and generalized everything in the IntegralClosure file to the noncommutative case whenever possible.

In the process I noticed more golfs, which result in this PR. Most notably, isIntegral_of_mem_of_FG is now proven using Cayley-Hamilton and doesn't depend on the Noetherian case isIntegral_of_noetherian; the latter is now proven using the former. In total the golfs makes mathlib 227 lines leaner (+487 -714).

The main changes are in the single file RingTheory/IntegralClosure:

  • Change the definition of Algebra.IsIntegral which makes it unfold to IsIntegral rather than RingHom.IsIntegralElem because the former has much more APIs.

  • Fix lemma names involving is_integral which are actually about IsIntegralElem: RingHom.is_integral_mapRingHom.isIntegralElem_map RingHom.is_integral_of_mem_closureRingHom.IsIntegralElem.of_mem_closure RingHom.is_integral_zero/oneRingHom.isIntegralElem_zero/one RingHom.is_integral_add/neg/sub/mul/of_mul_unitRingHom.IsIntegralElem.add/neg/sub/mul/of_mul_unit

  • Add a lemma Algebra.IsIntegral.of_injective.

  • Move isIntegral_of_(submodule_)noetherian down and golf them.

  • Remove (Algebra.)isIntegral_of_finite that work only over fields, in favor of the more general (Algebra.)isIntegral.of_finite.

  • Merge duplicate lemmas isIntegral_of_isScalarTower and isIntegral_tower_top_of_isIntegral into IsIntegral.tower_top.

  • Golf IsIntegral.of_mem_of_fg by first proving IsIntegral.of_finite using Cayley-Hamilton.

  • Add a docstring mentioning the Kurosh problem at Algebra.IsIntegral.finite. The negative solution to the problem means the theorem doesn't generalize to noncommutative algebras.

  • Golf IsIntegral.tmul and isField_of_isIntegral_of_isField(').

  • Combine isIntegral_trans_aux into isIntegral_trans and golf.

  • Add Algebra namespace to isIntegral_sup.

  • rename lemmas for dot notation: RingHom.isIntegral_transRingHom.IsIntegral.trans RingHom.isIntegral_quotient/tower_bot/top_of_isIntegralRingHom.IsIntegral.quotient/tower_bot/top isIntegral_of_mem_closure'IsIntegral.of_mem_closure' (and the '' version) isIntegral_of_surjectiveAlgebra.isIntegral_of_surjective

The next changed file is RingTheory/Algebraic:

  • Rename: of_larger_basetower_top (for consistency with IsIntegral) Algebra.isAlgebraic_of_finiteAlgebra.IsAlgebraic.of_finite Algebra.isAlgebraic_transAlgebra.IsAlgebraic.trans

  • Add new lemmasAlgebra.IsIntegral.isAlgebraic, isAlgebraic_algHom_iff, and Algebra.IsAlgebraic.of_injective to streamline some proofs.

The generalization from CommRing to Ring requires an additional lemma scaleRoots_eval₂_mul_of_commute in Polynomial/ScaleRoots.

A lemma Algebra.lmul_injective is added to Algebra/Bilinear (in order to golf the proof of IsIntegral.of_mem_of_fg).

In all other files, I merely fix the changed names, or use newly available dot notations.

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -22,14 +22,14 @@ open scoped TensorProduct
 open TensorProduct Algebra.TensorProduct
 
 theorem isIntegral_stableUnderComposition : StableUnderComposition fun f => f.IsIntegral := by
-  introv R hf hg; exact RingHom.isIntegral_trans _ _ hf hg
+  introv R hf hg; exact hf.trans _ _ hg
 #align ring_hom.is_integral_stable_under_composition RingHom.isIntegral_stableUnderComposition
 
 theorem isIntegral_respectsIso : RespectsIso fun f => f.IsIntegral := by
   apply isIntegral_stableUnderComposition.respectsIso
   introv x
   rw [← e.apply_symm_apply x]
-  apply RingHom.is_integral_map
+  apply RingHom.isIntegralElem_map
 #align ring_hom.is_integral_respects_iso RingHom.isIntegral_respectsIso
 
 theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun f => f.IsIntegral := by
chore(RingTheory/{Algebraic, Localization/Integral}): rename decls to use dot notation (#8437)

This PR tests a string-based tool for renaming declarations.

Inspired by this Zulip thread, I am trying to reduce the diff of #8406.

This PR makes the following renames:

| From | To |

Diff
@@ -38,7 +38,7 @@ theorem isIntegral_stableUnderBaseChange : StableUnderBaseChange fun f => f.IsIn
   refine' TensorProduct.induction_on x _ _ _
   · apply isIntegral_zero
   · intro x y; exact IsIntegral.tmul x (h y)
-  · intro x y hx hy; exact isIntegral_add hx hy
+  · intro x y hx hy; exact IsIntegral.add hx hy
 #align ring_hom.is_integral_stable_under_base_change RingHom.isIntegral_stableUnderBaseChange
 
 end RingHom
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module ring_theory.ring_hom.integral
-! leanprover-community/mathlib commit a7c017d750512a352b623b1824d75da5998457d0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.RingTheory.RingHomProperties
 import Mathlib.RingTheory.IntegralClosure
 
+#align_import ring_theory.ring_hom.integral from "leanprover-community/mathlib"@"a7c017d750512a352b623b1824d75da5998457d0"
+
 /-!
 
 # The meta properties of integral ring homomorphisms.
feat: port RingTheory.RingHom.Integral (#5004)

Dependencies 10 + 724

725 files ported (98.6%)
294479 lines ported (98.9%)
Show graph

The unported dependencies are