ring_theory.quotient_nilpotent
⟷
Mathlib.RingTheory.QuotientNilpotent
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.
(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)
(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)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2021 Oliver Nash. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
-/
-import RingTheory.Nilpotent
+import RingTheory.Nilpotent.Defs
import RingTheory.Ideal.QuotientOperations
#align_import ring_theory.quotient_nilpotent from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -45,11 +45,11 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
by_cases hI' : I = ⊥
· subst hI'; apply h₁; rw [← Ideal.zero_eq_bot, zero_pow]; exact zero_lt_two
cases n
- · rw [pow_zero, Ideal.one_eq_top] at hI
+ · rw [pow_zero, Ideal.one_eq_top] at hI
haveI := subsingleton_of_bot_eq_top hI.symm
exact (hI' (Subsingleton.elim _ _)).elim
cases n
- · rw [pow_one] at hI
+ · rw [pow_one] at hI
exact (hI' hI).elim
apply h₂ (I ^ 2) _ (Ideal.pow_le_self two_ne_zero)
· apply H n.succ _ (I ^ 2)
@@ -80,7 +80,7 @@ theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal
obtain ⟨y, hy⟩ := Ideal.Quotient.mk_surjective (↑H.unit⁻¹ : S ⧸ I)
have : Ideal.Quotient.mk I (x * y) = Ideal.Quotient.mk I 1 := by
rw [map_one, _root_.map_mul, hy, IsUnit.mul_val_inv]
- rw [Ideal.Quotient.eq] at this
+ rw [Ideal.Quotient.eq] at this
have : (x * y - 1) ^ 2 = 0 := by rw [← Ideal.mem_bot, ← e]; exact Ideal.pow_mem_pow this _
have : x * (y * (2 - x * y)) = 1 := by rw [eq_comm, ← sub_eq_zero, ← this]; ring
exact isUnit_of_mul_eq_one _ _ this
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Oliver Nash. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
-/
-import Mathbin.RingTheory.Nilpotent
-import Mathbin.RingTheory.Ideal.QuotientOperations
+import RingTheory.Nilpotent
+import RingTheory.Ideal.QuotientOperations
#align_import ring_theory.quotient_nilpotent from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Oliver Nash. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
-
-! This file was ported from Lean 3 source module ring_theory.quotient_nilpotent
-! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.RingTheory.Nilpotent
import Mathbin.RingTheory.Ideal.QuotientOperations
+#align_import ring_theory.quotient_nilpotent from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
+
/-!
# Nilpotent elements in quotient rings
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -19,15 +19,18 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
-/
+#print Ideal.isRadical_iff_quotient_reduced /-
theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) :=
by
conv_lhs => rw [← @Ideal.mk_ker R _ I]
exact RingHom.ker_isRadical_iff_reduced_of_surjective (@Ideal.Quotient.mk_surjective R _ I)
#align ideal.is_radical_iff_quotient_reduced Ideal.isRadical_iff_quotient_reduced
+-/
variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
+#print Ideal.IsNilpotent.induction_on /-
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
@@ -58,7 +61,9 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
· exact le_refl n.succ.succ
· apply h₁; rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
+-/
+#print IsNilpotent.isUnit_quotient_mk_iff /-
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
by
@@ -83,4 +88,5 @@ theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal
have : x * (y * (2 - x * y)) = 1 := by rw [eq_comm, ← sub_eq_zero, ← this]; ring
exact isUnit_of_mul_eq_one _ _ this
#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iff
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -45,11 +45,11 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
by_cases hI' : I = ⊥
· subst hI'; apply h₁; rw [← Ideal.zero_eq_bot, zero_pow]; exact zero_lt_two
cases n
- · rw [pow_zero, Ideal.one_eq_top] at hI
+ · rw [pow_zero, Ideal.one_eq_top] at hI
haveI := subsingleton_of_bot_eq_top hI.symm
exact (hI' (Subsingleton.elim _ _)).elim
cases n
- · rw [pow_one] at hI
+ · rw [pow_one] at hI
exact (hI' hI).elim
apply h₂ (I ^ 2) _ (Ideal.pow_le_self two_ne_zero)
· apply H n.succ _ (I ^ 2)
@@ -78,7 +78,7 @@ theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal
obtain ⟨y, hy⟩ := Ideal.Quotient.mk_surjective (↑H.unit⁻¹ : S ⧸ I)
have : Ideal.Quotient.mk I (x * y) = Ideal.Quotient.mk I 1 := by
rw [map_one, _root_.map_mul, hy, IsUnit.mul_val_inv]
- rw [Ideal.Quotient.eq] at this
+ rw [Ideal.Quotient.eq] at this
have : (x * y - 1) ^ 2 = 0 := by rw [← Ideal.mem_bot, ← e]; exact Ideal.pow_mem_pow this _
have : x * (y * (2 - x * y)) = 1 := by rw [eq_comm, ← sub_eq_zero, ← this]; ring
exact isUnit_of_mul_eq_one _ _ this
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -19,12 +19,6 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
-/
-/- warning: ideal.is_radical_iff_quotient_reduced -> Ideal.isRadical_iff_quotient_reduced is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Submodule.Quotient.HasQuotient.Quotient.hasZero.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Submodule.Quotient.instZeroQuotientSubmoduleToSemiringToAddCommMonoidHasQuotient.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (MonoidWithZero.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Semiring.toMonoidWithZero.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))))
-Case conversion may be inaccurate. Consider using '#align ideal.is_radical_iff_quotient_reduced Ideal.isRadical_iff_quotient_reducedₓ'. -/
theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) :=
by
@@ -34,9 +28,6 @@ theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Idea
variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
-/- warning: ideal.is_nilpotent.induction_on -> Ideal.IsNilpotent.induction_on is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
@@ -68,9 +59,6 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
· apply h₁; rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
-/- warning: is_nilpotent.is_unit_quotient_mk_iff -> IsNilpotent.isUnit_quotient_mk_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iffₓ'. -/
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -52,10 +52,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
clear n
intro n H S _ I hI
by_cases hI' : I = ⊥
- · subst hI'
- apply h₁
- rw [← Ideal.zero_eq_bot, zero_pow]
- exact zero_lt_two
+ · subst hI'; apply h₁; rw [← Ideal.zero_eq_bot, zero_pow]; exact zero_lt_two
cases n
· rw [pow_zero, Ideal.one_eq_top] at hI
haveI := subsingleton_of_bot_eq_top hI.symm
@@ -68,8 +65,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
· rw [← pow_mul, eq_bot_iff, ← hI, Nat.succ_eq_add_one, Nat.succ_eq_add_one]
exact Ideal.pow_le_pow (by linarith)
· exact le_refl n.succ.succ
- · apply h₁
- rw [← Ideal.map_pow, Ideal.map_quotient_self]
+ · apply h₁; rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
/- warning: is_nilpotent.is_unit_quotient_mk_iff -> IsNilpotent.isUnit_quotient_mk_iff is a dubious translation:
@@ -95,13 +91,8 @@ theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal
have : Ideal.Quotient.mk I (x * y) = Ideal.Quotient.mk I 1 := by
rw [map_one, _root_.map_mul, hy, IsUnit.mul_val_inv]
rw [Ideal.Quotient.eq] at this
- have : (x * y - 1) ^ 2 = 0 := by
- rw [← Ideal.mem_bot, ← e]
- exact Ideal.pow_mem_pow this _
- have : x * (y * (2 - x * y)) = 1 :=
- by
- rw [eq_comm, ← sub_eq_zero, ← this]
- ring
+ have : (x * y - 1) ^ 2 = 0 := by rw [← Ideal.mem_bot, ← e]; exact Ideal.pow_mem_pow this _
+ have : x * (y * (2 - x * y)) = 1 := by rw [eq_comm, ← sub_eq_zero, ← this]; ring
exact isUnit_of_mul_eq_one _ _ this
#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -35,10 +35,7 @@ theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Idea
variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
/- warning: ideal.is_nilpotent.induction_on -> Ideal.IsNilpotent.induction_on is a dubious translation:
-lean 3 declaration is
- forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toHasLe.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
-but is expected to have type
- forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107 : CommRing.{u_1} S], (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))), (Eq.{succ u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (instHPow.{u_1, 0} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120) S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.instBotSubmodule.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (J : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))), (LE.le.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Submodule.completeLattice.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 J)) -> (P _inst_2 hI h₁))
+<too large>
Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
@@ -76,10 +73,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
/- warning: is_nilpotent.is_unit_quotient_mk_iff -> IsNilpotent.isUnit_quotient_mk_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MulZeroClass.toHasZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_4)) x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) x))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iffₓ'. -/
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -79,7 +79,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
lean 3 declaration is
forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MulZeroClass.toHasZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_4)) x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) x))
+ forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) x))
Case conversion may be inaccurate. Consider using '#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iffₓ'. -/
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -36,7 +36,7 @@ variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S
/- warning: ideal.is_nilpotent.induction_on -> Ideal.IsNilpotent.induction_on is a dubious translation:
lean 3 declaration is
- forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toLE.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
+ forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toHasLe.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
but is expected to have type
forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107 : CommRing.{u_1} S], (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))), (Eq.{succ u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (instHPow.{u_1, 0} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120) S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.instBotSubmodule.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (J : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))), (LE.le.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Submodule.completeLattice.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 J)) -> (P _inst_2 hI h₁))
Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -38,7 +38,7 @@ variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S
lean 3 declaration is
forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toLE.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
but is expected to have type
- forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113 : CommRing.{u_1} S], (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))), (Eq.{succ u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (instHPow.{u_1, 0} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126) S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.instBotSubmodule.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (J : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))), (LE.le.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Submodule.completeLattice.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 J)) -> (P _inst_2 hI h₁))
+ forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107 : CommRing.{u_1} S], (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.107))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))), (Eq.{succ u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (instHPow.{u_1, 0} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120) S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))) (Submodule.instBotSubmodule.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.120 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (J : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))), (LE.le.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Submodule.completeLattice.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143)) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.143 J)) -> (P _inst_2 hI h₁))
Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -23,7 +23,7 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Submodule.Quotient.HasQuotient.Quotient.hasZero.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Submodule.Quotient.instZeroQuotientSubmoduleToSemiringToAddCommMonoidHasQuotient.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (MonoidWithZero.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Semiring.toMonoidWithZero.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Ring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))))
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Submodule.Quotient.instZeroQuotientSubmoduleToSemiringToAddCommMonoidHasQuotient.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (MonoidWithZero.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Semiring.toMonoidWithZero.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))))
Case conversion may be inaccurate. Consider using '#align ideal.is_radical_iff_quotient_reduced Ideal.isRadical_iff_quotient_reducedₓ'. -/
theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) :=
@@ -38,7 +38,7 @@ variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S
lean 3 declaration is
forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toLE.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
but is expected to have type
- forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113 : CommRing.{u_1} S], (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 : CommRing.{u_1} S] (I : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))), (Eq.{succ u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (instHPow.{u_1, 0} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126) S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.instBotSubmodule.{u_1, u_1} S S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))))) (Semiring.toModule.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 : CommRing.{u_1} S] (I : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (J : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))), (LE.le.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Submodule.completeLattice.{u_1, u_1} S S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))))) (Semiring.toModule.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (NonAssocRing.toNonAssocSemiring.{u_1} S (Ring.toNonAssocRing.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (NonAssocRing.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ring.toNonAssocRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (Ring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (NonAssocRing.toNonAssocSemiring.{u_1} S (Ring.toNonAssocRing.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (NonAssocRing.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ring.toNonAssocRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 J)) -> (P _inst_2 hI h₁))
+ forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (CommSemiring.toSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113 : CommRing.{u_1} S], (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))), (Eq.{succ u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (instHPow.{u_1, 0} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126) S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.instBotSubmodule.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 : CommRing.{u_1} S] (I : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (J : Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))), (LE.le.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Submodule.completeLattice.{u_1, u_1} S S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))))) (Semiring.toModule.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Semiring.toNonAssocSemiring.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Semiring.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommSemiring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toCommSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (CommSemiring.toSemiring.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 J)) -> (P _inst_2 hI h₁))
Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
@@ -79,7 +79,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
lean 3 declaration is
forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MulZeroClass.toHasZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_4)) x))
but is expected to have type
- forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Ring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)))) x))
+ forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommSemiring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (CommRing.toCommSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))) x))
Case conversion may be inaccurate. Consider using '#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iffₓ'. -/
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/284fdd2962e67d2932fa3a79ce19fcf92d38e228
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
! This file was ported from Lean 3 source module ring_theory.quotient_nilpotent
-! leanprover-community/mathlib commit da420a8c6dd5bdfb85c4ced85c34388f633bc6ff
+! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
/-!
# Nilpotent elements in quotient rings
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/06a655b5fcfbda03502f9158bbf6c0f1400886f9
@@ -16,6 +16,12 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
-/
+/- warning: ideal.is_radical_iff_quotient_reduced -> Ideal.isRadical_iff_quotient_reduced is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Submodule.Quotient.HasQuotient.Quotient.hasZero.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.hasQuotient.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), Iff (Ideal.IsRadical.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) I) (IsReduced.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Submodule.Quotient.instZeroQuotientSubmoduleToSemiringToAddCommMonoidHasQuotient.{u1, u1} R R (CommRing.toRing.{u1} R _inst_1) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I) (Monoid.Pow.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (MonoidWithZero.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Semiring.toMonoidWithZero.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Ring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_1) I) (Ideal.Quotient.commRing.{u1} R _inst_1 I)))))))
+Case conversion may be inaccurate. Consider using '#align ideal.is_radical_iff_quotient_reduced Ideal.isRadical_iff_quotient_reducedₓ'. -/
theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) :=
by
@@ -25,6 +31,12 @@ theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Idea
variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
+/- warning: ideal.is_nilpotent.induction_on -> Ideal.IsNilpotent.induction_on is a dubious translation:
+lean 3 declaration is
+ forall {S : Type.{u_2}} [_inst_2 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))), (IsNilpotent.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MulZeroClass.toHasZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toNonAssocSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2)))))))) (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_2)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_2))))))) I) -> (forall {P : forall {{S : Type.{u_2}}} [_inst_4 : CommRing.{u_2} S], (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_4))) -> Prop}, (forall {{S : Type.{u_2}}} [_inst_5 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))), (Eq.{succ u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (HPow.hPow.{u_2, 0, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (instHPow.{u_2, 0} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) Nat (Monoid.Pow.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (MonoidWithZero.toMonoid.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Semiring.toMonoidWithZero.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (IdemSemiring.toSemiring.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.idemSemiring.{u_2, u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5) S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (Algebra.id.{u_2} S (CommRing.toCommSemiring.{u_2} S _inst_5)))))))) I (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (Bot.bot.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))) (Submodule.hasBot.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_5)))))) -> (P S _inst_5 I)) -> (forall {{S : Type.{u_2}}} [_inst_6 : CommRing.{u_2} S] (I : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (J : Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))), (LE.le.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Preorder.toLE.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (PartialOrder.toPreorder.{u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (SetLike.partialOrder.{u_2, u_2} (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) S (Submodule.setLike.{u_2, u_2} S S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_2} S (Semiring.toNonAssocSemiring.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))) (Semiring.toModule.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))))))) I J) -> (P S _inst_6 I) -> (P (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I) (Ideal.map.{u_2, u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (RingHom.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6)) (Ring.toSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))) (RingHom.ringHomClass.{u_2, u_2} S (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (NonAssocRing.toNonAssocSemiring.{u_2} S (Ring.toNonAssocRing.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (NonAssocRing.toNonAssocSemiring.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ring.toNonAssocRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (CommRing.toRing.{u_2} (HasQuotient.Quotient.{u_2, u_2} S (Ideal.{u_2} S (Ring.toSemiring.{u_2} S (CommRing.toRing.{u_2} S _inst_6))) (Ideal.hasQuotient.{u_2} S _inst_6) I) (Ideal.Quotient.commRing.{u_2} S _inst_6 I))))) (Ideal.Quotient.mk.{u_2} S _inst_6 I) J)) -> (P S _inst_6 J)) -> (P S _inst_2 I))
+but is expected to have type
+ forall {S : Type.{u_2}} {_inst_2 : Type.{u_1}} [I : CommSemiring.{u_2} S] [hI : CommRing.{u_1} _inst_2] [P : Algebra.{u_2, u_1} S _inst_2 I (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))] (h₁ : Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))), (IsNilpotent.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (CommMonoidWithZero.toZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (CommSemiring.toCommMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (IdemCommSemiring.toCommSemiring.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Ideal.instIdemCommSemiringIdealToSemiring.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))) (Monoid.Pow.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI))) (Submodule.idemSemiring.{u_1, u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI) _inst_2 (Ring.toSemiring.{u_1} _inst_2 (CommRing.toRing.{u_1} _inst_2 hI)) (Algebra.id.{u_1} _inst_2 (CommRing.toCommSemiring.{u_1} _inst_2 hI))))))) h₁) -> (forall {P : forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113 : CommRing.{u_1} S], (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.113))) -> Prop}, (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 : CommRing.{u_1} S] (I : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))), (Eq.{succ u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (HPow.hPow.{u_1, 0, u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (instHPow.{u_1, 0} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) Nat (Monoid.Pow.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (MonoidWithZero.toMonoid.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Semiring.toMonoidWithZero.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (IdemSemiring.toSemiring.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.idemSemiring.{u_1, u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126) S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (Algebra.id.{u_1} S (CommRing.toCommSemiring.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))))) I (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (Bot.bot.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))) (Submodule.instBotSubmodule.{u_1, u_1} S S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126))))) (Semiring.toModule.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126)))))) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.126 I)) -> (forall {{S : Type.{u_1}}} [inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 : CommRing.{u_1} S] (I : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (J : Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))), (LE.le.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Preorder.toLE.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (PartialOrder.toPreorder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (OmegaCompletePartialOrder.toPartialOrder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (CompleteLattice.instOmegaCompletePartialOrder.{u_1} (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Submodule.completeLattice.{u_1, u_1} S S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u_1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u_1} S (Semiring.toNonAssocSemiring.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))))) (Semiring.toModule.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)))))))) I J) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) -> (P (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) (Ideal.map.{u_1, u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (RingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (NonAssocRing.toNonAssocSemiring.{u_1} S (Ring.toNonAssocRing.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (NonAssocRing.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ring.toNonAssocRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149)) (Ring.toSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))) (RingHom.instRingHomClassRingHom.{u_1, u_1} S (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (NonAssocRing.toNonAssocSemiring.{u_1} S (Ring.toNonAssocRing.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (NonAssocRing.toNonAssocSemiring.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ring.toNonAssocRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (CommRing.toRing.{u_1} (HasQuotient.Quotient.{u_1, u_1} S (Ideal.{u_1} S (Ring.toSemiring.{u_1} S (CommRing.toRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149))) (Ideal.instHasQuotientIdealToSemiringToRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149) I) (Ideal.Quotient.commRing.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I))))) (Ideal.Quotient.mk.{u_1} S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 I) J)) -> (P S inst._@.Mathlib.RingTheory.QuotientNilpotent._hyg.149 J)) -> (P _inst_2 hI h₁))
+Case conversion may be inaccurate. Consider using '#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_onₓ'. -/
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
@@ -60,6 +72,12 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
+/- warning: is_nilpotent.is_unit_quotient_mk_iff -> IsNilpotent.isUnit_quotient_mk_iff is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MulZeroClass.toHasZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toNonAssocSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4)))))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toMonoid.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.hasQuotient.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_4)) x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_4 : CommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))}, (IsNilpotent.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (CommMonoidWithZero.toZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (CommSemiring.toCommMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemCommSemiring.toCommSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instIdemCommSemiringIdealToSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))) (Monoid.Pow.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (MonoidWithZero.toMonoid.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Semiring.toMonoidWithZero.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (IdemSemiring.toSemiring.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Submodule.idemSemiring.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_4) R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_4))))))) I) -> (forall {x : R}, Iff (IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Ring.toSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (CommRing.toRing.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) x) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_4))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R _inst_4) I) (Ideal.Quotient.commRing.{u1} R _inst_4 I)))))))) (Ideal.Quotient.mk.{u1} R _inst_4 I) x)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_4)))) x))
+Case conversion may be inaccurate. Consider using '#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iffₓ'. -/
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/f24cc2891c0e328f0ee8c57387103aa462c44b5e
Mathlib.RingTheory.Nilpotent
has a few very simple definitions (Mathlib.Data.Nat.Lattice
is sufficient to state them), but needs some pretty heavy imports (ideals, linear algebra) towards the end. This change moves the heavier parts into a new file.
@@ -3,7 +3,7 @@ Copyright (c) 2021 Oliver Nash. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
-/
-import Mathlib.RingTheory.Nilpotent
+import Mathlib.RingTheory.Nilpotent.Lemmas
import Mathlib.RingTheory.Ideal.QuotientOperations
#align_import ring_theory.quotient_nilpotent from "leanprover-community/mathlib"@"da420a8c6dd5bdfb85c4ced85c34388f633bc6ff"
@@ -65,7 +65,6 @@ theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type*} [CommRing R] {I : Ideal R
((DoubleQuot.quotQuotEquivQuotSup I J).trans
(Ideal.quotEquivOfEq (sup_eq_right.mpr e))).symm.toRingHom
· introv e H
- skip
obtain ⟨y, hy⟩ := Ideal.Quotient.mk_surjective (↑H.unit⁻¹ : S ⧸ I)
have : Ideal.Quotient.mk I (x * y) = Ideal.Quotient.mk I 1 := by
rw [map_one, _root_.map_mul, hy, IsUnit.mul_val_inv]
I ran tryAtEachStep on all files under Mathlib
to find all locations where omega
succeeds. For each that was a linarith
without an only
, I tried replacing it with omega
, and I verified that elaboration time got smaller. (In almost all cases, there was a noticeable speedup.) I also replaced some slow aesop
s along the way.
@@ -45,7 +45,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
apply h₂ (I ^ 2) _ (Ideal.pow_le_self two_ne_zero)
· apply H n.succ _ (I ^ 2)
· rw [← pow_mul, eq_bot_iff, ← hI, Nat.succ_eq_add_one, Nat.succ_eq_add_one]
- apply Ideal.pow_le_pow_right (by linarith)
+ apply Ideal.pow_le_pow_right (by omega)
· exact n.succ.lt_succ_self
· apply h₁
rw [← Ideal.map_pow, Ideal.map_quotient_self]
f ^ n
(#9617)
This involves moving lemmas from Algebra.GroupPower.Ring
to Algebra.GroupWithZero.Basic
and changing some 0 < n
assumptions to n ≠ 0
.
From LeanAPAP
@@ -34,8 +34,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
by_cases hI' : I = ⊥
· subst hI'
apply h₁
- rw [← Ideal.zero_eq_bot, zero_pow]
- exact zero_lt_two
+ rw [← Ideal.zero_eq_bot, zero_pow two_ne_zero]
cases' n with n
· rw [pow_zero, Ideal.one_eq_top] at hI
haveI := subsingleton_of_bot_eq_top hI.symm
@@ -24,7 +24,7 @@ variable {R S : Type*} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
`P I → P (J ⧸ I) → P J`, then `P` holds for all nilpotent ideals. -/
theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
- {P : ∀ ⦃S : Type _⦄ [CommRing S], ∀ _I : Ideal S, Prop}
+ {P : ∀ ⦃S : Type _⦄ [CommRing S], Ideal S → Prop}
(h₁ : ∀ ⦃S : Type _⦄ [CommRing S], ∀ I : Ideal S, I ^ 2 = ⊥ → P I)
(h₂ : ∀ ⦃S : Type _⦄ [CommRing S], ∀ I J : Ideal S, I ≤ J → P I →
P (J.map (Ideal.Quotient.mk I)) → P J) :
The names for lemmas about monotonicity of (a ^ ·)
and (· ^ n)
were a mess. This PR tidies up everything related by following the naming convention for (a * ·)
and (· * b)
. Namely, (a ^ ·)
is pow_right
and (· ^ n)
is pow_left
in lemma names. All lemma renames follow the corresponding multiplication lemma names closely.
Algebra.GroupPower.Order
pow_mono
→ pow_right_mono
pow_le_pow
→ pow_le_pow_right
pow_le_pow_of_le_left
→ pow_le_pow_left
pow_lt_pow_of_lt_left
→ pow_lt_pow_left
strictMonoOn_pow
→ pow_left_strictMonoOn
pow_strictMono_right
→ pow_right_strictMono
pow_lt_pow
→ pow_lt_pow_right
pow_lt_pow_iff
→ pow_lt_pow_iff_right
pow_le_pow_iff
→ pow_le_pow_iff_right
self_lt_pow
→ lt_self_pow
strictAnti_pow
→ pow_right_strictAnti
pow_lt_pow_iff_of_lt_one
→ pow_lt_pow_iff_right_of_lt_one
pow_lt_pow_of_lt_one
→ pow_lt_pow_right_of_lt_one
lt_of_pow_lt_pow
→ lt_of_pow_lt_pow_left
le_of_pow_le_pow
→ le_of_pow_le_pow_left
pow_lt_pow₀
→ pow_lt_pow_right₀
Algebra.GroupPower.CovariantClass
pow_le_pow_of_le_left'
→ pow_le_pow_left'
nsmul_le_nsmul_of_le_right
→ nsmul_le_nsmul_right
pow_lt_pow'
→ pow_lt_pow_right'
nsmul_lt_nsmul
→ nsmul_lt_nsmul_left
pow_strictMono_left
→ pow_right_strictMono'
nsmul_strictMono_right
→ nsmul_left_strictMono
StrictMono.pow_right'
→ StrictMono.pow_const
StrictMono.nsmul_left
→ StrictMono.const_nsmul
pow_strictMono_right'
→ pow_left_strictMono
nsmul_strictMono_left
→ nsmul_right_strictMono
Monotone.pow_right
→ Monotone.pow_const
Monotone.nsmul_left
→ Monotone.const_nsmul
lt_of_pow_lt_pow'
→ lt_of_pow_lt_pow_left'
lt_of_nsmul_lt_nsmul
→ lt_of_nsmul_lt_nsmul_right
pow_le_pow'
→ pow_le_pow_right'
nsmul_le_nsmul
→ nsmul_le_nsmul_left
pow_le_pow_of_le_one'
→ pow_le_pow_right_of_le_one'
nsmul_le_nsmul_of_nonpos
→ nsmul_le_nsmul_left_of_nonpos
le_of_pow_le_pow'
→ le_of_pow_le_pow_left'
le_of_nsmul_le_nsmul'
→ le_of_nsmul_le_nsmul_right'
pow_le_pow_iff'
→ pow_le_pow_iff_right'
nsmul_le_nsmul_iff
→ nsmul_le_nsmul_iff_left
pow_lt_pow_iff'
→ pow_lt_pow_iff_right'
nsmul_lt_nsmul_iff
→ nsmul_lt_nsmul_iff_left
Data.Nat.Pow
Nat.pow_lt_pow_of_lt_left
→ Nat.pow_lt_pow_left
Nat.pow_le_iff_le_left
→ Nat.pow_le_pow_iff_left
Nat.pow_lt_iff_lt_left
→ Nat.pow_lt_pow_iff_left
pow_le_pow_iff_left
pow_lt_pow_iff_left
pow_right_injective
pow_right_inj
Nat.pow_le_pow_left
to have the correct name since Nat.pow_le_pow_of_le_left
is in Std.Nat.pow_le_pow_right
to have the correct name since Nat.pow_le_pow_of_le_right
is in Std.self_le_pow
was a duplicate of le_self_pow
.Nat.pow_lt_pow_of_lt_right
is defeq to pow_lt_pow_right
.Nat.pow_right_strictMono
is defeq to pow_right_strictMono
.Nat.pow_le_iff_le_right
is defeq to pow_le_pow_iff_right
.Nat.pow_lt_iff_lt_right
is defeq to pow_lt_pow_iff_right
.0 < n
or 1 ≤ n
to n ≠ 0
.Nat
lemmas have been protected
.@@ -46,7 +46,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
apply h₂ (I ^ 2) _ (Ideal.pow_le_self two_ne_zero)
· apply H n.succ _ (I ^ 2)
· rw [← pow_mul, eq_bot_iff, ← hI, Nat.succ_eq_add_one, Nat.succ_eq_add_one]
- apply Ideal.pow_le_pow (by linarith)
+ apply Ideal.pow_le_pow_right (by linarith)
· exact n.succ.lt_succ_self
· apply h₁
rw [← Ideal.map_pow, Ideal.map_quotient_self]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -12,13 +12,13 @@ import Mathlib.RingTheory.Ideal.QuotientOperations
# Nilpotent elements in quotient rings
-/
-theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
+theorem Ideal.isRadical_iff_quotient_reduced {R : Type*} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) := by
conv_lhs => rw [← @Ideal.mk_ker R _ I]
exact RingHom.ker_isRadical_iff_reduced_of_surjective (@Ideal.Quotient.mk_surjective R _ I)
#align ideal.is_radical_iff_quotient_reduced Ideal.isRadical_iff_quotient_reduced
-variable {R S : Type _} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
+variable {R S : Type*} [CommSemiring R] [CommRing S] [Algebra R S] (I : Ideal S)
/-- Let `P` be a property on ideals. If `P` holds for square-zero ideals, and if
@@ -52,7 +52,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
-theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
+theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type*} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x := by
refine' ⟨_, fun h => h.map <| Ideal.Quotient.mk I⟩
revert x
@@ -2,15 +2,12 @@
Copyright (c) 2021 Oliver Nash. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Oliver Nash
-
-! This file was ported from Lean 3 source module ring_theory.quotient_nilpotent
-! leanprover-community/mathlib commit da420a8c6dd5bdfb85c4ced85c34388f633bc6ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.RingTheory.Nilpotent
import Mathlib.RingTheory.Ideal.QuotientOperations
+#align_import ring_theory.quotient_nilpotent from "leanprover-community/mathlib"@"da420a8c6dd5bdfb85c4ced85c34388f633bc6ff"
+
/-!
# Nilpotent elements in quotient rings
-/
Tracking down porting notes mentioning lean4#2210.
Some removals of nolint simpNF
may need to be reverted; let's see what CI says.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -32,8 +32,6 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
(h₂ : ∀ ⦃S : Type _⦄ [CommRing S], ∀ I J : Ideal S, I ≤ J → P I →
P (J.map (Ideal.Quotient.mk I)) → P J) :
P I := by
--- Porting note: linarith misbehaving below
- have bound (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
obtain ⟨n, hI : I ^ n = ⊥⟩ := hI
induction' n using Nat.strong_induction_on with n H generalizing S
by_cases hI' : I = ⊥
@@ -51,12 +49,9 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
apply h₂ (I ^ 2) _ (Ideal.pow_le_self two_ne_zero)
· apply H n.succ _ (I ^ 2)
· rw [← pow_mul, eq_bot_iff, ← hI, Nat.succ_eq_add_one, Nat.succ_eq_add_one]
- -- Porting note: linarith wants AddGroup (Ideal S) to solve (n:ℕ)+1+1 ≤ 2*(n+1)
- apply Ideal.pow_le_pow <| bound n
+ apply Ideal.pow_le_pow (by linarith)
· exact n.succ.lt_succ_self
· apply h₁
- -- Porting note: used to be by linarith?
- -- Investigate this issue again after during lean4#2210 cleanup.
rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
@@ -35,12 +35,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
-- Porting note: linarith misbehaving below
have bound (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
obtain ⟨n, hI : I ^ n = ⊥⟩ := hI
- revert S
- -- Porting note: lean could previously figure out the motive
- apply Nat.strong_induction_on n (p := fun n =>
- ∀ {S : Type u_1} [CommRing S] [Algebra R S] (I : Ideal S), I ^ n = ⊥ → P I)
- clear n
- intro n H S _ _ I hI
+ induction' n using Nat.strong_induction_on with n H generalizing S
by_cases hI' : I = ⊥
· subst hI'
apply h₁
@@ -58,7 +53,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
· rw [← pow_mul, eq_bot_iff, ← hI, Nat.succ_eq_add_one, Nat.succ_eq_add_one]
-- Porting note: linarith wants AddGroup (Ideal S) to solve (n:ℕ)+1+1 ≤ 2*(n+1)
apply Ideal.pow_le_pow <| bound n
- · exact le_refl n.succ.succ
+ · exact n.succ.lt_succ_self
· apply h₁
-- Porting note: used to be by linarith?
-- Investigate this issue again after during lean4#2210 cleanup.
@@ -30,9 +30,7 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
{P : ∀ ⦃S : Type _⦄ [CommRing S], ∀ _I : Ideal S, Prop}
(h₁ : ∀ ⦃S : Type _⦄ [CommRing S], ∀ I : Ideal S, I ^ 2 = ⊥ → P I)
(h₂ : ∀ ⦃S : Type _⦄ [CommRing S], ∀ I J : Ideal S, I ≤ J → P I →
- -- Porting note: etaExperiment fixes this but times out Zero (Ideal S) in IsNilpotent I
- P (@Ideal.map S (S ⧸ I) (S →+* S ⧸ I) (_) (_)
- RingHom.instRingHomClassRingHom (Ideal.Quotient.mk I) J) → P J) :
+ P (J.map (Ideal.Quotient.mk I)) → P J) :
P I := by
-- Porting note: linarith misbehaving below
have bound (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
@@ -64,11 +62,9 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
· apply h₁
-- Porting note: used to be by linarith?
-- Investigate this issue again after during lean4#2210 cleanup.
- rw [← @Ideal.map_pow S (S ⧸ I^2) (S →+* S ⧸ I^2) _ _ RingHom.instRingHomClassRingHom,
- Ideal.map_quotient_self]
+ rw [← Ideal.map_pow, Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
-example (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x := by
refine' ⟨_, fun h => h.map <| Ideal.Quotient.mk I⟩
Now that leanprover/lean4#2210 has been merged, this PR:
set_option synthInstance.etaExperiment true
commands (and some etaExperiment%
term elaborators)set_option maxHeartbeats
commandsCo-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -15,8 +15,6 @@ import Mathlib.RingTheory.Ideal.QuotientOperations
# Nilpotent elements in quotient rings
-/
--- Porting note: failed to synth RingHomClass (R →+* R ⧸ I) R (R ⧸ I)
-set_option synthInstance.etaExperiment true in
theorem Ideal.isRadical_iff_quotient_reduced {R : Type _} [CommRing R] (I : Ideal R) :
I.IsRadical ↔ IsReduced (R ⧸ I) := by
conv_lhs => rw [← @Ideal.mk_ker R _ I]
@@ -38,7 +36,6 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
P I := by
-- Porting note: linarith misbehaving below
have bound (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
--- Porting note: failed to synth RingHomClass (R →+* R ⧸ I) R (R ⧸ I)
obtain ⟨n, hI : I ^ n = ⊥⟩ := hI
revert S
-- Porting note: lean could previously figure out the motive
@@ -65,7 +62,8 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
apply Ideal.pow_le_pow <| bound n
· exact le_refl n.succ.succ
· apply h₁
- -- Porting note: cannot synth RingHomClass and etaExperiment causes linarith to fail in bound
+ -- Porting note: used to be by linarith?
+ -- Investigate this issue again after during lean4#2210 cleanup.
rw [← @Ideal.map_pow S (S ⧸ I^2) (S →+* S ⧸ I^2) _ _ RingHom.instRingHomClassRingHom,
Ideal.map_quotient_self]
#align ideal.is_nilpotent.induction_on Ideal.IsNilpotent.induction_on
@@ -73,8 +71,6 @@ theorem Ideal.IsNilpotent.induction_on (hI : IsNilpotent I)
example (m : ℕ) : m + 1 + 1 ≤ 2 * (m + 1) := by linarith
theorem IsNilpotent.isUnit_quotient_mk_iff {R : Type _} [CommRing R] {I : Ideal R}
(hI : IsNilpotent I) {x : R} : IsUnit (Ideal.Quotient.mk I x) ↔ IsUnit x := by
--- Porting note: cannot synth RingHomClass
-set_option synthInstance.etaExperiment true in
refine' ⟨_, fun h => h.map <| Ideal.Quotient.mk I⟩
revert x
apply Ideal.IsNilpotent.induction_on (R := R) (S := R) I hI <;> clear hI I
@@ -100,4 +96,3 @@ set_option synthInstance.etaExperiment true in
ring
exact isUnit_of_mul_eq_one _ _ this
#align is_nilpotent.is_unit_quotient_mk_iff IsNilpotent.isUnit_quotient_mk_iff
-
The unported dependencies are