ring_theory.quotient_nilpotentMathlib.RingTheory.QuotientNilpotent

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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"
Diff
@@ -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
Diff
@@ -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"
 
Diff
@@ -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
 
Diff
@@ -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
+-/
 
Diff
@@ -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
Diff
@@ -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
Diff
@@ -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
 
Diff
@@ -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 :=
Diff
@@ -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 :=
Diff
@@ -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ₓ'. -/
Diff
@@ -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. -/
Diff
@@ -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 :=
Diff
@@ -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.
 -/
 
 
Diff
@@ -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

Changes in mathlib4

mathlib3
mathlib4
chore: split RingTheory.Nilpotent (#12184)

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.

Diff
@@ -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"
chore: remove tactics (#11365)

More tactics that are not used, found using the linter at #11308.

The PR consists of tactic removals, whitespace changes and replacing a porting note by an explanation.

Diff
@@ -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]
refactor: optimize proofs with omega (#11093)

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 aesops along the way.

Diff
@@ -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]
feat: The support of 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

Diff
@@ -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
chore(*): use α → β instead of ∀ _ : α, β (#9529)
Diff
@@ -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) :
chore: Rename pow monotonicity lemmas (#9095)

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.

Renames

Algebra.GroupPower.Order

  • pow_monopow_right_mono
  • pow_le_powpow_le_pow_right
  • pow_le_pow_of_le_leftpow_le_pow_left
  • pow_lt_pow_of_lt_leftpow_lt_pow_left
  • strictMonoOn_powpow_left_strictMonoOn
  • pow_strictMono_rightpow_right_strictMono
  • pow_lt_powpow_lt_pow_right
  • pow_lt_pow_iffpow_lt_pow_iff_right
  • pow_le_pow_iffpow_le_pow_iff_right
  • self_lt_powlt_self_pow
  • strictAnti_powpow_right_strictAnti
  • pow_lt_pow_iff_of_lt_onepow_lt_pow_iff_right_of_lt_one
  • pow_lt_pow_of_lt_onepow_lt_pow_right_of_lt_one
  • lt_of_pow_lt_powlt_of_pow_lt_pow_left
  • le_of_pow_le_powle_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_rightnsmul_le_nsmul_right
  • pow_lt_pow'pow_lt_pow_right'
  • nsmul_lt_nsmulnsmul_lt_nsmul_left
  • pow_strictMono_leftpow_right_strictMono'
  • nsmul_strictMono_rightnsmul_left_strictMono
  • StrictMono.pow_right'StrictMono.pow_const
  • StrictMono.nsmul_leftStrictMono.const_nsmul
  • pow_strictMono_right'pow_left_strictMono
  • nsmul_strictMono_leftnsmul_right_strictMono
  • Monotone.pow_rightMonotone.pow_const
  • Monotone.nsmul_leftMonotone.const_nsmul
  • lt_of_pow_lt_pow'lt_of_pow_lt_pow_left'
  • lt_of_nsmul_lt_nsmullt_of_nsmul_lt_nsmul_right
  • pow_le_pow'pow_le_pow_right'
  • nsmul_le_nsmulnsmul_le_nsmul_left
  • pow_le_pow_of_le_one'pow_le_pow_right_of_le_one'
  • nsmul_le_nsmul_of_nonposnsmul_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_iffnsmul_le_nsmul_iff_left
  • pow_lt_pow_iff'pow_lt_pow_iff_right'
  • nsmul_lt_nsmul_iffnsmul_lt_nsmul_iff_left

Data.Nat.Pow

  • Nat.pow_lt_pow_of_lt_leftNat.pow_lt_pow_left
  • Nat.pow_le_iff_le_leftNat.pow_le_pow_iff_left
  • Nat.pow_lt_iff_lt_leftNat.pow_lt_pow_iff_left

Lemmas added

  • 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.

Lemmas removed

  • 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.

Other changes

  • A bunch of proofs have been golfed.
  • Some lemma assumptions have been turned from 0 < n or 1 ≤ n to n ≠ 0.
  • A few Nat lemmas have been protected.
  • One docstring has been fixed.
Diff
@@ -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]
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -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
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 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
 -/
chore: further cleanup after lean4#2210 (#4511)

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>

Diff
@@ -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
 
chore: tidy various files (#4304)

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -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.
chore: cleanup various notes about etaExperiment (#4029)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -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⟩
chore: reenable eta, bump to nightly 2023-05-16 (#3414)

Now that leanprover/lean4#2210 has been merged, this PR:

  • removes all the set_option synthInstance.etaExperiment true commands (and some etaExperiment% term elaborators)
  • removes many but not quite all set_option maxHeartbeats commands
  • makes various other changes required to cope with leanprover/lean4#2210.

Co-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>

Diff
@@ -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
-
feat: port RingTheory.QuotientNilpotent (#3293)

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Dependencies 8 + 456

457 files ported (98.3%)
187965 lines ported (98.4%)
Show graph

The unported dependencies are