ring_theory.ideal.local_ring
⟷
Mathlib.RingTheory.Ideal.LocalRing
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -191,7 +191,7 @@ namespace LocalRing
#print LocalRing.of_isUnit_or_isUnit_one_sub_self /-
theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a ∨ IsUnit (1 - a)) :
LocalRing R :=
- ⟨fun a b hab => add_sub_cancel' a b ▸ hab.symm ▸ h a⟩
+ ⟨fun a b hab => add_sub_cancel_left a b ▸ hab.symm ▸ h a⟩
#align local_ring.of_is_unit_or_is_unit_one_sub_self LocalRing.of_isUnit_or_isUnit_one_sub_self
-/
@@ -199,7 +199,7 @@ variable [LocalRing R]
#print LocalRing.isUnit_or_isUnit_one_sub_self /-
theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
- isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel'_right a 1).symm ▸ isUnit_one
+ isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel a 1).symm ▸ isUnit_one
#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_self
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -104,7 +104,7 @@ variable [LocalRing R]
theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a ∨ IsUnit b :=
by
rcases h with ⟨u, hu⟩
- rw [← Units.inv_mul_eq_one, mul_add] at hu
+ rw [← Units.inv_mul_eq_one, mul_add] at hu
apply Or.imp _ _ (is_unit_or_is_unit_of_add_one hu) <;> exact isUnit_of_mul_isUnit_right
#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_add
-/
@@ -134,7 +134,7 @@ instance maximalIdeal.isMaximal : (maximalIdeal R).IsMaximal :=
constructor
· intro h; apply h; exact isUnit_one
· intro I x hI hx H
- erw [Classical.not_not] at hx
+ erw [Classical.not_not] at hx
rcases hx with ⟨u, rfl⟩
simpa using I.mul_mem_left (↑u⁻¹) H
#align local_ring.maximal_ideal.is_maximal LocalRing.maximalIdeal.isMaximal
@@ -384,7 +384,7 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
intro a b hab
obtain ⟨a, rfl⟩ := hf a
obtain ⟨b, rfl⟩ := hf b
- rw [← map_add] at hab
+ rw [← map_add] at hab
exact
(is_unit_or_is_unit_of_is_unit_add <| IsLocalRingHom.map_nonunit _ hab).imp f.is_unit_map
f.is_unit_map)
@@ -609,7 +609,7 @@ theorem isLocalRingHom_residue : IsLocalRingHom (LocalRing.residue R) :=
constructor
intro a ha
by_contra
- erw [ideal.quotient.eq_zero_iff_mem.mpr ((LocalRing.mem_maximalIdeal _).mpr h)] at ha
+ erw [ideal.quotient.eq_zero_iff_mem.mpr ((LocalRing.mem_maximalIdeal _).mpr h)] at ha
exact ha.ne_zero rfl
#align local_ring.is_local_ring_hom_residue LocalRing.isLocalRingHom_residue
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -517,7 +517,7 @@ theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
#print LocalRing.ResidueField.map_id_apply /-
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
- FunLike.congr_fun map_id x
+ DFunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
-/
@@ -525,7 +525,7 @@ theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
[IsLocalRingHom g] : map g (map f x) = map (g.comp f) x :=
- FunLike.congr_fun (map_comp f g).symm x
+ DFunLike.congr_fun (map_comp f g).symm x
#align local_ring.residue_field.map_map LocalRing.ResidueField.map_map
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -205,13 +205,13 @@ theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
#print LocalRing.isUnit_of_mem_nonunits_one_sub_self /-
theorem isUnit_of_mem_nonunits_one_sub_self (a : R) (h : 1 - a ∈ nonunits R) : IsUnit a :=
- or_iff_not_imp_right.1 (isUnit_or_isUnit_one_sub_self a) h
+ Classical.or_iff_not_imp_right.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_self
-/
#print LocalRing.isUnit_one_sub_self_of_mem_nonunits /-
theorem isUnit_one_sub_self_of_mem_nonunits (a : R) (h : a ∈ nonunits R) : IsUnit (1 - a) :=
- or_iff_not_imp_left.1 (isUnit_or_isUnit_one_sub_self a) h
+ Classical.or_iff_not_imp_left.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunits
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
-/
-import Mathbin.Algebra.Algebra.Basic
-import Mathbin.RingTheory.Ideal.Operations
-import Mathbin.RingTheory.JacobsonIdeal
-import Mathbin.Logic.Equiv.TransferInstance
+import Algebra.Algebra.Basic
+import RingTheory.Ideal.Operations
+import RingTheory.JacobsonIdeal
+import Logic.Equiv.TransferInstance
#align_import ring_theory.ideal.local_ring from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -303,7 +303,7 @@ theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irr
Irreducible x :=
⟨fun h => hfx.not_unit <| IsUnit.map f h, fun p q hx =>
let ⟨H⟩ := h
- Or.imp (H p) (H q) <| hfx.isUnit_or_isUnit <| f.map_mul p q ▸ congr_arg f hx⟩
+ Or.imp (H p) (H q) <| hfx.isUnit_or_isUnit <| f.map_hMul p q ▸ congr_arg f hx⟩
#align of_irreducible_map of_irreducible_map
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -399,7 +399,7 @@ theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R
by
intro a
obtain ⟨b, hb⟩ := hf (a : S)
- use (isUnit_of_map_unit f _ (by rw [hb]; exact Units.isUnit _)).Unit; ext; exact hb
+ use(isUnit_of_map_unit f _ (by rw [hb]; exact Units.isUnit _)).Unit; ext; exact hb
#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHom
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
-
-! This file was ported from Lean 3 source module ring_theory.ideal.local_ring
-! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Algebra.Basic
import Mathbin.RingTheory.Ideal.Operations
import Mathbin.RingTheory.JacobsonIdeal
import Mathbin.Logic.Equiv.TransferInstance
+#align_import ring_theory.ideal.local_ring from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
+
/-!
# Local rings
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -56,16 +56,20 @@ variable [CommSemiring R]
namespace LocalRing
+#print LocalRing.of_isUnit_or_isUnit_of_isUnit_add /-
theorem of_isUnit_or_isUnit_of_isUnit_add [Nontrivial R]
(h : ∀ a b : R, IsUnit (a + b) → IsUnit a ∨ IsUnit b) : LocalRing R :=
⟨fun a b hab => h a b <| hab.symm ▸ isUnit_one⟩
#align local_ring.of_is_unit_or_is_unit_of_is_unit_add LocalRing.of_isUnit_or_isUnit_of_isUnit_add
+-/
+#print LocalRing.of_nonunits_add /-
/-- A semiring is local if it is nontrivial and the set of nonunits is closed under the addition. -/
theorem of_nonunits_add [Nontrivial R]
(h : ∀ a b : R, a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R) : LocalRing R :=
⟨fun a b hab => or_iff_not_and_not.2 fun H => h a b H.1 H.2 <| hab.symm ▸ isUnit_one⟩
#align local_ring.of_nonunits_add LocalRing.of_nonunits_add
+-/
#print LocalRing.of_unique_max_ideal /-
/-- A semiring is local if it has a unique maximal ideal. -/
@@ -84,6 +88,7 @@ theorem of_unique_max_ideal (h : ∃! I : Ideal R, I.IsMaximal) : LocalRing R :=
#align local_ring.of_unique_max_ideal LocalRing.of_unique_max_ideal
-/
+#print LocalRing.of_unique_nonzero_prime /-
theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPrime P) : LocalRing R :=
of_unique_max_ideal
(by
@@ -94,19 +99,24 @@ theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPri
· rintro rfl
exact hPnot_top (hM.1.2 P (bot_lt_iff_ne_bot.2 hPnonzero)))
#align local_ring.of_unique_nonzero_prime LocalRing.of_unique_nonzero_prime
+-/
variable [LocalRing R]
+#print LocalRing.isUnit_or_isUnit_of_isUnit_add /-
theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a ∨ IsUnit b :=
by
rcases h with ⟨u, hu⟩
rw [← Units.inv_mul_eq_one, mul_add] at hu
apply Or.imp _ _ (is_unit_or_is_unit_of_add_one hu) <;> exact isUnit_of_mul_isUnit_right
#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_add
+-/
+#print LocalRing.nonunits_add /-
theorem nonunits_add {a b : R} (ha : a ∈ nonunits R) (hb : b ∈ nonunits R) : a + b ∈ nonunits R :=
fun H => not_or_of_not ha hb (isUnit_or_isUnit_of_isUnit_add H)
#align local_ring.nonunits_add LocalRing.nonunits_add
+-/
variable (R)
@@ -148,11 +158,13 @@ theorem eq_maximalIdeal {I : Ideal R} (hI : I.IsMaximal) : I = maximalIdeal R :=
#align local_ring.eq_maximal_ideal LocalRing.eq_maximalIdeal
-/
+#print LocalRing.le_maximalIdeal /-
theorem le_maximalIdeal {J : Ideal R} (hJ : J ≠ ⊤) : J ≤ maximalIdeal R :=
by
rcases Ideal.exists_le_maximal J hJ with ⟨M, hM1, hM2⟩
rwa [← eq_maximal_ideal hM1]
#align local_ring.le_maximal_ideal LocalRing.le_maximalIdeal
+-/
#print LocalRing.mem_maximalIdeal /-
@[simp]
@@ -161,11 +173,13 @@ theorem mem_maximalIdeal (x) : x ∈ maximalIdeal R ↔ x ∈ nonunits R :=
#align local_ring.mem_maximal_ideal LocalRing.mem_maximalIdeal
-/
+#print LocalRing.isField_iff_maximalIdeal_eq /-
theorem isField_iff_maximalIdeal_eq : IsField R ↔ maximalIdeal R = ⊥ :=
not_iff_not.mp
⟨Ring.ne_bot_of_isMaximal_of_not_isField inferInstance, fun h =>
Ring.not_isField_iff_exists_prime.mpr ⟨_, h, Ideal.IsMaximal.isPrime' _⟩⟩
#align local_ring.is_field_iff_maximal_ideal_eq LocalRing.isField_iff_maximalIdeal_eq
+-/
end LocalRing
@@ -177,25 +191,34 @@ variable [CommRing R]
namespace LocalRing
+#print LocalRing.of_isUnit_or_isUnit_one_sub_self /-
theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a ∨ IsUnit (1 - a)) :
LocalRing R :=
⟨fun a b hab => add_sub_cancel' a b ▸ hab.symm ▸ h a⟩
#align local_ring.of_is_unit_or_is_unit_one_sub_self LocalRing.of_isUnit_or_isUnit_one_sub_self
+-/
variable [LocalRing R]
+#print LocalRing.isUnit_or_isUnit_one_sub_self /-
theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel'_right a 1).symm ▸ isUnit_one
#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_self
+-/
+#print LocalRing.isUnit_of_mem_nonunits_one_sub_self /-
theorem isUnit_of_mem_nonunits_one_sub_self (a : R) (h : 1 - a ∈ nonunits R) : IsUnit a :=
or_iff_not_imp_right.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_self
+-/
+#print LocalRing.isUnit_one_sub_self_of_mem_nonunits /-
theorem isUnit_one_sub_self_of_mem_nonunits (a : R) (h : a ∈ nonunits R) : IsUnit (1 - a) :=
or_iff_not_imp_left.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunits
+-/
+#print LocalRing.of_surjective' /-
theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Function.Surjective f) :
LocalRing S :=
of_isUnit_or_isUnit_one_sub_self
@@ -206,7 +229,9 @@ theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Functio
rw [← f.map_one, ← f.map_sub]
apply f.is_unit_map)
#align local_ring.of_surjective' LocalRing.of_surjective'
+-/
+#print LocalRing.jacobson_eq_maximalIdeal /-
theorem jacobson_eq_maximalIdeal (I : Ideal R) (h : I ≠ ⊤) :
I.jacobson = LocalRing.maximalIdeal R :=
by
@@ -214,6 +239,7 @@ theorem jacobson_eq_maximalIdeal (I : Ideal R) (h : I ≠ ⊤) :
· exact sInf_le ⟨LocalRing.le_maximalIdeal h, LocalRing.maximalIdeal.isMaximal R⟩
· exact le_sInf fun J (hJ : I ≤ J ∧ J.IsMaximal) => le_of_eq (LocalRing.eq_maximalIdeal hJ.2).symm
#align local_ring.jacobson_eq_maximal_ideal LocalRing.jacobson_eq_maximalIdeal
+-/
end LocalRing
@@ -238,16 +264,20 @@ instance isLocalRingHom_id (R : Type _) [Semiring R] : IsLocalRingHom (RingHom.i
#align is_local_ring_hom_id isLocalRingHom_id
-/
+#print isUnit_map_iff /-
@[simp]
theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔ IsUnit a :=
⟨IsLocalRingHom.map_nonunit a, f.isUnit_map⟩
#align is_unit_map_iff isUnit_map_iff
+-/
+#print map_mem_nonunits_iff /-
@[simp]
theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
f a ∈ nonunits S ↔ a ∈ nonunits R :=
⟨fun h ha => h <| (isUnit_map_iff f a).mpr ha, fun h ha => h <| (isUnit_map_iff f a).mp ha⟩
#align map_mem_nonunits_iff map_mem_nonunits_iff
+-/
#print isLocalRingHom_comp /-
instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g] [IsLocalRingHom f] :
@@ -256,23 +286,29 @@ instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g]
#align is_local_ring_hom_comp isLocalRingHom_comp
-/
+#print isLocalRingHom_equiv /-
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
where map_nonunit a ha := by
convert (f.symm : S →+* R).isUnit_map ha
exact (RingEquiv.symm_apply_apply f a).symm
#align is_local_ring_hom_equiv isLocalRingHom_equiv
+-/
+#print isUnit_of_map_unit /-
@[simp]
theorem isUnit_of_map_unit (f : R →+* S) [IsLocalRingHom f] (a) (h : IsUnit (f a)) : IsUnit a :=
IsLocalRingHom.map_nonunit a h
#align is_unit_of_map_unit isUnit_of_map_unit
+-/
+#print of_irreducible_map /-
theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irreducible (f x)) :
Irreducible x :=
⟨fun h => hfx.not_unit <| IsUnit.map f h, fun p q hx =>
let ⟨H⟩ := h
Or.imp (H p) (H q) <| hfx.isUnit_or_isUnit <| f.map_mul p q ▸ congr_arg f hx⟩
#align of_irreducible_map of_irreducible_map
+-/
#print isLocalRingHom_of_comp /-
theorem isLocalRingHom_of_comp (f : R →+* S) (g : S →+* T) [IsLocalRingHom (g.comp f)] :
@@ -281,6 +317,7 @@ theorem isLocalRingHom_of_comp (f : R →+* S) (g : S →+* T) [IsLocalRingHom (
#align is_local_ring_hom_of_comp isLocalRingHom_of_comp
-/
+#print RingHom.domain_localRing /-
/-- If `f : R →+* S` is a local ring hom, then `R` is a local ring if `S` is. -/
theorem RingHom.domain_localRing {R S : Type _} [CommSemiring R] [CommSemiring S] [H : LocalRing S]
(f : R →+* S) [IsLocalRingHom f] : LocalRing R :=
@@ -291,6 +328,7 @@ theorem RingHom.domain_localRing {R S : Type _} [CommSemiring R] [CommSemiring S
simp_rw [← map_mem_nonunits_iff f, f.map_add]
exact LocalRing.nonunits_add
#align ring_hom.domain_local_ring RingHom.domain_localRing
+-/
end
@@ -300,12 +338,14 @@ open LocalRing
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
+#print map_nonunit /-
/--
The image of the maximal ideal of the source is contained within the maximal ideal of the target.
-/
theorem map_nonunit (f : R →+* S) [IsLocalRingHom f] (a : R) (h : a ∈ maximalIdeal R) :
f a ∈ maximalIdeal S := fun H => h <| isUnit_of_map_unit f a H
#align map_nonunit map_nonunit
+-/
end
@@ -315,6 +355,7 @@ section
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
+#print LocalRing.local_hom_TFAE /-
/-- A ring homomorphism between local rings is a local ring hom iff it reflects units,
i.e. any preimage of a unit is still a unit. https://stacks.math.columbia.edu/tag/07BJ
-/
@@ -334,9 +375,11 @@ theorem local_hom_TFAE (f : R →+* S) :
tfae_have 5 → 4; exact fun h => le_of_eq h.symm
tfae_finish
#align local_ring.local_hom_tfae LocalRing.local_hom_TFAE
+-/
end
+#print LocalRing.of_surjective /-
theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivial S] (f : R →+* S)
[IsLocalRingHom f] (hf : Function.Surjective f) : LocalRing S :=
of_isUnit_or_isUnit_of_isUnit_add
@@ -349,7 +392,9 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
(is_unit_or_is_unit_of_is_unit_add <| IsLocalRingHom.map_nonunit _ hab).imp f.is_unit_map
f.is_unit_map)
#align local_ring.of_surjective LocalRing.of_surjective
+-/
+#print LocalRing.surjective_units_map_of_local_ringHom /-
/-- If `f : R →+* S` is a surjective local ring hom, then the induced units map is surjective. -/
theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R →+* S)
(hf : Function.Surjective f) (h : IsLocalRingHom f) :
@@ -359,6 +404,7 @@ theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R
obtain ⟨b, hb⟩ := hf (a : S)
use (isUnit_of_map_unit f _ (by rw [hb]; exact Units.isUnit _)).Unit; ext; exact hb
#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHom
+-/
section
@@ -414,16 +460,20 @@ def lift {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S) [Is
#align local_ring.residue_field.lift LocalRing.ResidueField.lift
-/
+#print LocalRing.ResidueField.lift_comp_residue /-
theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] : (lift f).comp (residue R) = f :=
RingHom.ext fun _ => rfl
#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residue
+-/
+#print LocalRing.ResidueField.lift_residue_apply /-
@[simp]
theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] (x) : lift f (residue R x) = f x :=
rfl
#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_apply
+-/
#print LocalRing.ResidueField.map /-
/-- The map on residue fields induced by a local homomorphism between local rings -/
@@ -461,21 +511,28 @@ theorem map_comp_residue (f : R →+* S) [IsLocalRingHom f] :
#align local_ring.residue_field.map_comp_residue LocalRing.ResidueField.map_comp_residue
-/
+#print LocalRing.ResidueField.map_residue /-
theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
ResidueField.map f (residue R r) = residue S (f r) :=
rfl
#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residue
+-/
+#print LocalRing.ResidueField.map_id_apply /-
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
FunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
+-/
+#print LocalRing.ResidueField.map_map /-
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
[IsLocalRingHom g] : map g (map f x) = map (g.comp f) x :=
FunLike.congr_fun (map_comp f g).symm x
#align local_ring.residue_field.map_map LocalRing.ResidueField.map_map
+-/
+#print LocalRing.ResidueField.mapEquiv /-
/-- A ring isomorphism defines an isomorphism of residue fields. -/
@[simps apply]
def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueField S
@@ -487,23 +544,31 @@ def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueF
map_mul' := RingHom.map_mul _
map_add' := RingHom.map_add _
#align local_ring.residue_field.map_equiv LocalRing.ResidueField.mapEquiv
+-/
+#print LocalRing.ResidueField.mapEquiv.symm /-
@[simp]
theorem mapEquiv.symm (f : R ≃+* S) : (mapEquiv f).symm = mapEquiv f.symm :=
rfl
#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symm
+-/
+#print LocalRing.ResidueField.mapEquiv_trans /-
@[simp]
theorem mapEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* T) :
mapEquiv (e₁.trans e₂) = (mapEquiv e₁).trans (mapEquiv e₂) :=
RingEquiv.toRingHom_injective <| map_comp (e₁ : R →+* S) (e₂ : S →+* T)
#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_trans
+-/
+#print LocalRing.ResidueField.mapEquiv_refl /-
@[simp]
theorem mapEquiv_refl : mapEquiv (RingEquiv.refl R) = RingEquiv.refl _ :=
RingEquiv.toRingHom_injective map_id
#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_refl
+-/
+#print LocalRing.ResidueField.mapAut /-
/-- The group homomorphism from `ring_aut R` to `ring_aut k` where `k`
is the residue field of `R`. -/
@[simps]
@@ -513,6 +578,7 @@ def mapAut : RingAut R →* RingAut (LocalRing.ResidueField R)
map_mul' e₁ e₂ := mapEquiv_trans e₂ e₁
map_one' := mapEquiv_refl
#align local_ring.residue_field.map_aut LocalRing.ResidueField.mapAut
+-/
section MulSemiringAction
@@ -522,19 +588,23 @@ variable (G : Type _) [Group G] [MulSemiringAction G R]
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
+#print LocalRing.ResidueField.residue_smul /-
@[simp]
theorem residue_smul (g : G) (r : R) : residue R (g • r) = g • residue R r :=
rfl
#align local_ring.residue_field.residue_smul LocalRing.ResidueField.residue_smul
+-/
end MulSemiringAction
end ResidueField
+#print LocalRing.ker_eq_maximalIdeal /-
theorem ker_eq_maximalIdeal [Field K] (φ : R →+* K) (hφ : Function.Surjective φ) :
φ.ker = maximalIdeal R :=
LocalRing.eq_maximalIdeal <| (RingHom.ker_isMaximal_of_surjective φ) hφ
#align local_ring.ker_eq_maximal_ideal LocalRing.ker_eq_maximalIdeal
+-/
#print LocalRing.isLocalRingHom_residue /-
theorem isLocalRingHom_residue : IsLocalRingHom (LocalRing.residue R) :=
@@ -565,18 +635,22 @@ instance (priority := 100) : LocalRing K :=
end Field
+#print LocalRing.maximalIdeal_eq_bot /-
theorem LocalRing.maximalIdeal_eq_bot {R : Type _} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)
#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_bot
+-/
namespace RingEquiv
+#print RingEquiv.localRing /-
@[reducible]
protected theorem localRing {A B : Type _} [CommSemiring A] [LocalRing A] [CommSemiring B]
(e : A ≃+* B) : LocalRing B :=
haveI := e.symm.to_equiv.nontrivial
LocalRing.of_surjective (e : A →+* B) e.surjective
#align ring_equiv.local_ring RingEquiv.localRing
+-/
end RingEquiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -258,7 +258,7 @@ instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g]
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
where map_nonunit a ha := by
- convert(f.symm : S →+* R).isUnit_map ha
+ convert (f.symm : S →+* R).isUnit_map ha
exact (RingEquiv.symm_apply_apply f a).symm
#align is_local_ring_hom_equiv isLocalRingHom_equiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -100,7 +100,7 @@ variable [LocalRing R]
theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a ∨ IsUnit b :=
by
rcases h with ⟨u, hu⟩
- rw [← Units.inv_mul_eq_one, mul_add] at hu
+ rw [← Units.inv_mul_eq_one, mul_add] at hu
apply Or.imp _ _ (is_unit_or_is_unit_of_add_one hu) <;> exact isUnit_of_mul_isUnit_right
#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_add
@@ -127,7 +127,7 @@ instance maximalIdeal.isMaximal : (maximalIdeal R).IsMaximal :=
constructor
· intro h; apply h; exact isUnit_one
· intro I x hI hx H
- erw [Classical.not_not] at hx
+ erw [Classical.not_not] at hx
rcases hx with ⟨u, rfl⟩
simpa using I.mul_mem_left (↑u⁻¹) H
#align local_ring.maximal_ideal.is_maximal LocalRing.maximalIdeal.isMaximal
@@ -329,7 +329,7 @@ theorem local_hom_TFAE (f : R →+* S) :
tfae_have 2 → 4; exact Set.image_subset_iff.1
tfae_have 3 ↔ 4; exact Ideal.map_le_iff_le_comap
tfae_have 4 → 1; intro h; fconstructor; exact fun x => not_imp_not.1 (@h x)
- tfae_have 1 → 5; intro ; skip; ext
+ tfae_have 1 → 5; intro; skip; ext
exact not_iff_not.2 (isUnit_map_iff f x)
tfae_have 5 → 4; exact fun h => le_of_eq h.symm
tfae_finish
@@ -344,7 +344,7 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
intro a b hab
obtain ⟨a, rfl⟩ := hf a
obtain ⟨b, rfl⟩ := hf b
- rw [← map_add] at hab
+ rw [← map_add] at hab
exact
(is_unit_or_is_unit_of_is_unit_add <| IsLocalRingHom.map_nonunit _ hab).imp f.is_unit_map
f.is_unit_map)
@@ -367,7 +367,8 @@ variable (R) [CommRing R] [LocalRing R] [CommRing S] [LocalRing S] [CommRing T]
#print LocalRing.ResidueField /-
/-- The residue field of a local ring is the quotient of the ring by its maximal ideal. -/
def ResidueField :=
- R ⧸ maximalIdeal R deriving Ring, CommRing, Inhabited
+ R ⧸ maximalIdeal R
+deriving Ring, CommRing, Inhabited
#align local_ring.residue_field LocalRing.ResidueField
-/
@@ -541,7 +542,7 @@ theorem isLocalRingHom_residue : IsLocalRingHom (LocalRing.residue R) :=
constructor
intro a ha
by_contra
- erw [ideal.quotient.eq_zero_iff_mem.mpr ((LocalRing.mem_maximalIdeal _).mpr h)] at ha
+ erw [ideal.quotient.eq_zero_iff_mem.mpr ((LocalRing.mem_maximalIdeal _).mpr h)] at ha
exact ha.ne_zero rfl
#align local_ring.is_local_ring_hom_residue LocalRing.isLocalRingHom_residue
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -554,7 +554,7 @@ namespace Field
variable (K) [Field K]
-open Classical
+open scoped Classical
-- see Note [lower instance priority]
instance (priority := 100) : LocalRing K :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -56,23 +56,11 @@ variable [CommSemiring R]
namespace LocalRing
-/- warning: local_ring.of_is_unit_or_is_unit_of_is_unit_add -> LocalRing.of_isUnit_or_isUnit_of_isUnit_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_is_unit_or_is_unit_of_is_unit_add LocalRing.of_isUnit_or_isUnit_of_isUnit_addₓ'. -/
theorem of_isUnit_or_isUnit_of_isUnit_add [Nontrivial R]
(h : ∀ a b : R, IsUnit (a + b) → IsUnit a ∨ IsUnit b) : LocalRing R :=
⟨fun a b hab => h a b <| hab.symm ▸ isUnit_one⟩
#align local_ring.of_is_unit_or_is_unit_of_is_unit_add LocalRing.of_isUnit_or_isUnit_of_isUnit_add
-/- warning: local_ring.of_nonunits_add -> LocalRing.of_nonunits_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_nonunits_add LocalRing.of_nonunits_addₓ'. -/
/-- A semiring is local if it is nontrivial and the set of nonunits is closed under the addition. -/
theorem of_nonunits_add [Nontrivial R]
(h : ∀ a b : R, a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R) : LocalRing R :=
@@ -96,12 +84,6 @@ theorem of_unique_max_ideal (h : ∃! I : Ideal R, I.IsMaximal) : LocalRing R :=
#align local_ring.of_unique_max_ideal LocalRing.of_unique_max_ideal
-/
-/- warning: local_ring.of_unique_nonzero_prime -> LocalRing.of_unique_nonzero_prime is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R], (ExistsUnique.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (P : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => And (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) P (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Ideal.IsPrime.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) P))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R], (ExistsUnique.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (P : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => And (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) P (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Ideal.IsPrime.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) P))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_unique_nonzero_prime LocalRing.of_unique_nonzero_primeₓ'. -/
theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPrime P) : LocalRing R :=
of_unique_max_ideal
(by
@@ -115,12 +97,6 @@ theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPri
variable [LocalRing R]
-/- warning: local_ring.is_unit_or_is_unit_of_is_unit_add -> LocalRing.isUnit_or_isUnit_of_isUnit_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))
-Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_addₓ'. -/
theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a ∨ IsUnit b :=
by
rcases h with ⟨u, hu⟩
@@ -128,12 +104,6 @@ theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a
apply Or.imp _ _ (is_unit_or_is_unit_of_add_one hu) <;> exact isUnit_of_mul_isUnit_right
#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_add
-/- warning: local_ring.nonunits_add -> LocalRing.nonunits_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align local_ring.nonunits_add LocalRing.nonunits_addₓ'. -/
theorem nonunits_add {a b : R} (ha : a ∈ nonunits R) (hb : b ∈ nonunits R) : a + b ∈ nonunits R :=
fun H => not_or_of_not ha hb (isUnit_or_isUnit_of_isUnit_add H)
#align local_ring.nonunits_add LocalRing.nonunits_add
@@ -178,12 +148,6 @@ theorem eq_maximalIdeal {I : Ideal R} (hI : I.IsMaximal) : I = maximalIdeal R :=
#align local_ring.eq_maximal_ideal LocalRing.eq_maximalIdeal
-/
-/- warning: local_ring.le_maximal_ideal -> LocalRing.le_maximalIdeal is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {J : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) J (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasTop.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toHasLe.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) J (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {J : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) J (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instTopSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) J (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))
-Case conversion may be inaccurate. Consider using '#align local_ring.le_maximal_ideal LocalRing.le_maximalIdealₓ'. -/
theorem le_maximalIdeal {J : Ideal R} (hJ : J ≠ ⊤) : J ≤ maximalIdeal R :=
by
rcases Ideal.exists_le_maximal J hJ with ⟨M, hM1, hM2⟩
@@ -197,12 +161,6 @@ theorem mem_maximalIdeal (x) : x ∈ maximalIdeal R ↔ x ∈ nonunits R :=
#align local_ring.mem_maximal_ideal LocalRing.mem_maximalIdeal
-/
-/- warning: local_ring.is_field_iff_maximal_ideal_eq -> LocalRing.isField_iff_maximalIdeal_eq is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)], Iff (IsField.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)], Iff (IsField.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align local_ring.is_field_iff_maximal_ideal_eq LocalRing.isField_iff_maximalIdeal_eqₓ'. -/
theorem isField_iff_maximalIdeal_eq : IsField R ↔ maximalIdeal R = ⊥ :=
not_iff_not.mp
⟨Ring.ne_bot_of_isMaximal_of_not_isField inferInstance, fun h =>
@@ -219,12 +177,6 @@ variable [CommRing R]
namespace LocalRing
-/- warning: local_ring.of_is_unit_or_is_unit_one_sub_self -> LocalRing.of_isUnit_or_isUnit_one_sub_self is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R), Or (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))) -> (LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R), Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_is_unit_or_is_unit_one_sub_self LocalRing.of_isUnit_or_isUnit_one_sub_selfₓ'. -/
theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a ∨ IsUnit (1 - a)) :
LocalRing R :=
⟨fun a b hab => add_sub_cancel' a b ▸ hab.symm ▸ h a⟩
@@ -232,42 +184,18 @@ theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a
variable [LocalRing R]
-/- warning: local_ring.is_unit_or_is_unit_one_sub_self -> LocalRing.isUnit_or_isUnit_one_sub_self is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), Or (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))
-Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_selfₓ'. -/
theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel'_right a 1).symm ▸ isUnit_one
#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_self
-/- warning: local_ring.is_unit_of_mem_nonunits_one_sub_self -> LocalRing.isUnit_of_mem_nonunits_one_sub_self is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a) (nonunits.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) -> (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a)
-Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_selfₓ'. -/
theorem isUnit_of_mem_nonunits_one_sub_self (a : R) (h : 1 - a ∈ nonunits R) : IsUnit a :=
or_iff_not_imp_right.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_self
-/- warning: local_ring.is_unit_one_sub_self_of_mem_nonunits -> LocalRing.isUnit_one_sub_self_of_mem_nonunits is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) -> (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))
-Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunitsₓ'. -/
theorem isUnit_one_sub_self_of_mem_nonunits (a : R) (h : a ∈ nonunits R) : IsUnit (1 - a) :=
or_iff_not_imp_left.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunits
-/- warning: local_ring.of_surjective' -> LocalRing.of_surjective' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f)) -> (LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective' LocalRing.of_surjective'ₓ'. -/
theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Function.Surjective f) :
LocalRing S :=
of_isUnit_or_isUnit_one_sub_self
@@ -279,12 +207,6 @@ theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Functio
apply f.is_unit_map)
#align local_ring.of_surjective' LocalRing.of_surjective'
-/- warning: local_ring.jacobson_eq_maximal_ideal -> LocalRing.jacobson_eq_maximalIdeal is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.jacobson.{u1} R (CommRing.toRing.{u1} R _inst_1) I) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.jacobson.{u1} R (CommRing.toRing.{u1} R _inst_1) I) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
-Case conversion may be inaccurate. Consider using '#align local_ring.jacobson_eq_maximal_ideal LocalRing.jacobson_eq_maximalIdealₓ'. -/
theorem jacobson_eq_maximalIdeal (I : Ideal R) (h : I ≠ ⊤) :
I.jacobson = LocalRing.maximalIdeal R :=
by
@@ -316,23 +238,11 @@ instance isLocalRingHom_id (R : Type _) [Semiring R] : IsLocalRingHom (RingHom.i
#align is_local_ring_hom_id isLocalRingHom_id
-/
-/- warning: is_unit_map_iff -> isUnit_map_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
-Case conversion may be inaccurate. Consider using '#align is_unit_map_iff isUnit_map_iffₓ'. -/
@[simp]
theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔ IsUnit a :=
⟨IsLocalRingHom.map_nonunit a, f.isUnit_map⟩
#align is_unit_map_iff isUnit_map_iff
-/- warning: map_mem_nonunits_iff -> map_mem_nonunits_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.Mem.{u2, u2} S (Set.{u2} S) (Set.hasMem.{u2} S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Set.{u2} S) (Set.instMembershipSet.{u2} S) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
-Case conversion may be inaccurate. Consider using '#align map_mem_nonunits_iff map_mem_nonunits_iffₓ'. -/
@[simp]
theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
f a ∈ nonunits S ↔ a ∈ nonunits R :=
@@ -346,35 +256,17 @@ instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g]
#align is_local_ring_hom_comp isLocalRingHom_comp
-/
-/- warning: is_local_ring_hom_equiv -> isLocalRingHom_equiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))), IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))))))) f)
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))), IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 (RingHomClass.toRingHom.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))))) f)
-Case conversion may be inaccurate. Consider using '#align is_local_ring_hom_equiv isLocalRingHom_equivₓ'. -/
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
where map_nonunit a ha := by
convert(f.symm : S →+* R).isUnit_map ha
exact (RingEquiv.symm_apply_apply f a).symm
#align is_local_ring_hom_equiv isLocalRingHom_equiv
-/- warning: is_unit_of_map_unit -> isUnit_of_map_unit is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
-Case conversion may be inaccurate. Consider using '#align is_unit_of_map_unit isUnit_of_map_unitₓ'. -/
@[simp]
theorem isUnit_of_map_unit (f : R →+* S) [IsLocalRingHom f] (a) (h : IsUnit (f a)) : IsUnit a :=
IsLocalRingHom.map_nonunit a h
#align is_unit_of_map_unit isUnit_of_map_unit
-/- warning: of_irreducible_map -> of_irreducible_map is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
-Case conversion may be inaccurate. Consider using '#align of_irreducible_map of_irreducible_mapₓ'. -/
theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irreducible (f x)) :
Irreducible x :=
⟨fun h => hfx.not_unit <| IsUnit.map f h, fun p q hx =>
@@ -389,12 +281,6 @@ theorem isLocalRingHom_of_comp (f : R →+* S) (g : S →+* T) [IsLocalRingHom (
#align is_local_ring_hom_of_comp isLocalRingHom_of_comp
-/
-/- warning: ring_hom.domain_local_ring -> RingHom.domain_localRing is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_4 : CommSemiring.{u1} R] [_inst_5 : CommSemiring.{u2} S] [H : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_5)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_4)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_5))) [_inst_6 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_4) (CommSemiring.toSemiring.{u2} S _inst_5) f], LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_4)
-but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u1}} [_inst_4 : CommSemiring.{u2} R] [_inst_5 : CommSemiring.{u1} S] [H : LocalRing.{u1} S (CommSemiring.toSemiring.{u1} S _inst_5)] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_4)) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_5))) [_inst_6 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R _inst_4) (CommSemiring.toSemiring.{u1} S _inst_5) f], LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R _inst_4)
-Case conversion may be inaccurate. Consider using '#align ring_hom.domain_local_ring RingHom.domain_localRingₓ'. -/
/-- If `f : R →+* S` is a local ring hom, then `R` is a local ring if `S` is. -/
theorem RingHom.domain_localRing {R S : Type _} [CommSemiring R] [CommSemiring S] [H : LocalRing S]
(f : R →+* S) [IsLocalRingHom f] : LocalRing R :=
@@ -414,12 +300,6 @@ open LocalRing
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
-/- warning: map_nonunit -> map_nonunit is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.Mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.Mem.{u2, u2} S (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.hasMem.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.instMembership.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
-Case conversion may be inaccurate. Consider using '#align map_nonunit map_nonunitₓ'. -/
/--
The image of the maximal ideal of the source is contained within the maximal ideal of the target.
-/
@@ -435,9 +315,6 @@ section
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
-/- warning: local_ring.local_hom_tfae -> LocalRing.local_hom_TFAE is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.local_hom_tfae LocalRing.local_hom_TFAEₓ'. -/
/-- A ring homomorphism between local rings is a local ring hom iff it reflects units,
i.e. any preimage of a unit is still a unit. https://stacks.math.columbia.edu/tag/07BJ
-/
@@ -460,12 +337,6 @@ theorem local_hom_TFAE (f : R →+* S) :
end
-/- warning: local_ring.of_surjective -> LocalRing.of_surjective is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
-Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective LocalRing.of_surjectiveₓ'. -/
theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivial S] (f : R →+* S)
[IsLocalRingHom f] (hf : Function.Surjective f) : LocalRing S :=
of_isUnit_or_isUnit_of_isUnit_add
@@ -479,9 +350,6 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
f.is_unit_map)
#align local_ring.of_surjective LocalRing.of_surjective
-/- warning: local_ring.surjective_units_map_of_local_ring_hom -> LocalRing.surjective_units_map_of_local_ringHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHomₓ'. -/
/-- If `f : R →+* S` is a surjective local ring hom, then the induced units map is surjective. -/
theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R →+* S)
(hf : Function.Surjective f) (h : IsLocalRingHom f) :
@@ -545,20 +413,11 @@ def lift {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S) [Is
#align local_ring.residue_field.lift LocalRing.ResidueField.lift
-/
-/- warning: local_ring.residue_field.lift_comp_residue -> LocalRing.ResidueField.lift_comp_residue is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_7 : CommRing.{u1} R] [_inst_8 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7))] [_inst_9 : Field.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7)) (Ring.toSemiring.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))) f], Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (RingHom.comp.{u1, u1, u2} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9)))) (LocalRing.ResidueField.lift.{u1, u2} R S _inst_7 _inst_8 _inst_9 f _inst_10) (LocalRing.residue.{u1} R _inst_7 _inst_8)) f
-but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f], Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHom.comp.{u2, u2, u1} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (LocalRing.residue.{u2} R _inst_7 _inst_8)) f
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residueₓ'. -/
theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] : (lift f).comp (residue R) = f :=
RingHom.ext fun _ => rfl
#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residue
-/- warning: local_ring.residue_field.lift_residue_apply -> LocalRing.ResidueField.lift_residue_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_applyₓ'. -/
@[simp]
theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] (x) : lift f (residue R x) = f x :=
@@ -601,36 +460,21 @@ theorem map_comp_residue (f : R →+* S) [IsLocalRingHom f] :
#align local_ring.residue_field.map_comp_residue LocalRing.ResidueField.map_comp_residue
-/
-/- warning: local_ring.residue_field.map_residue -> LocalRing.ResidueField.map_residue is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residueₓ'. -/
theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
ResidueField.map f (residue R r) = residue S (f r) :=
rfl
#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residue
-/- warning: local_ring.residue_field.map_id_apply -> LocalRing.ResidueField.map_id_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_applyₓ'. -/
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
FunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
-/- warning: local_ring.residue_field.map_map -> LocalRing.ResidueField.map_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_map LocalRing.ResidueField.map_mapₓ'. -/
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
[IsLocalRingHom g] : map g (map f x) = map (g.comp f) x :=
FunLike.congr_fun (map_comp f g).symm x
#align local_ring.residue_field.map_map LocalRing.ResidueField.map_map
-/- warning: local_ring.residue_field.map_equiv -> LocalRing.ResidueField.mapEquiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))) -> (RingEquiv.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))) -> (RingEquiv.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))))
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv LocalRing.ResidueField.mapEquivₓ'. -/
/-- A ring isomorphism defines an isomorphism of residue fields. -/
@[simps apply]
def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueField S
@@ -643,40 +487,22 @@ def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueF
map_add' := RingHom.map_add _
#align local_ring.residue_field.map_equiv LocalRing.ResidueField.mapEquiv
-/- warning: local_ring.residue_field.map_equiv.symm -> LocalRing.ResidueField.mapEquiv.symm is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (RingEquiv.symm.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f)) (LocalRing.ResidueField.mapEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) f))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))), Eq.{max (succ u1) (succ u2)} (RingEquiv.{u2, u1} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (RingEquiv.symm.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f)) (LocalRing.ResidueField.mapEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) f))
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symmₓ'. -/
@[simp]
theorem mapEquiv.symm (f : R ≃+* S) : (mapEquiv f).symm = mapEquiv f.symm :=
rfl
#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symm
-/- warning: local_ring.residue_field.map_equiv_trans -> LocalRing.ResidueField.mapEquiv_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_transₓ'. -/
@[simp]
theorem mapEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* T) :
mapEquiv (e₁.trans e₂) = (mapEquiv e₁).trans (mapEquiv e₂) :=
RingEquiv.toRingHom_injective <| map_comp (e₁ : R →+* S) (e₂ : S →+* T)
#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_trans
-/- warning: local_ring.residue_field.map_equiv_refl -> LocalRing.ResidueField.mapEquiv_refl is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))], Eq.{succ u1} (RingEquiv.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.ResidueField.mapEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (RingEquiv.refl.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))], Eq.{succ u1} (RingEquiv.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.mapEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.refl.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) (RingEquiv.refl.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))))
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_reflₓ'. -/
@[simp]
theorem mapEquiv_refl : mapEquiv (RingEquiv.refl R) = RingEquiv.refl _ :=
RingEquiv.toRingHom_injective map_id
#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_refl
-/- warning: local_ring.residue_field.map_aut -> LocalRing.ResidueField.mapAut is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_aut LocalRing.ResidueField.mapAutₓ'. -/
/-- The group homomorphism from `ring_aut R` to `ring_aut k` where `k`
is the residue field of `R`. -/
@[simps]
@@ -695,9 +521,6 @@ variable (G : Type _) [Group G] [MulSemiringAction G R]
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
-/- warning: local_ring.residue_field.residue_smul -> LocalRing.ResidueField.residue_smul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.residue_smul LocalRing.ResidueField.residue_smulₓ'. -/
@[simp]
theorem residue_smul (g : G) (r : R) : residue R (g • r) = g • residue R r :=
rfl
@@ -707,12 +530,6 @@ end MulSemiringAction
end ResidueField
-/- warning: local_ring.ker_eq_maximal_ideal -> LocalRing.ker_eq_maximalIdeal is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (fun (_x : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) => R -> K) (RingHom.hasCoeToFun.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))) (RingHom.ringHomClass.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => K) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
-Case conversion may be inaccurate. Consider using '#align local_ring.ker_eq_maximal_ideal LocalRing.ker_eq_maximalIdealₓ'. -/
theorem ker_eq_maximalIdeal [Field K] (φ : R →+* K) (hφ : Function.Surjective φ) :
φ.ker = maximalIdeal R :=
LocalRing.eq_maximalIdeal <| (RingHom.ker_isMaximal_of_surjective φ) hφ
@@ -747,24 +564,12 @@ instance (priority := 100) : LocalRing K :=
end Field
-/- warning: local_ring.maximal_ideal_eq_bot -> LocalRing.maximalIdeal_eq_bot is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Field.{u1} R], Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (LocalRing.maximalIdeal.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)) (Field.localRing.{u1} R _inst_1)) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Field.{u1} R], Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (LocalRing.maximalIdeal.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)) (Field.instLocalRingToSemiringToDivisionSemiringToSemifield.{u1} R _inst_1)) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_botₓ'. -/
theorem LocalRing.maximalIdeal_eq_bot {R : Type _} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)
#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_bot
namespace RingEquiv
-/- warning: ring_equiv.local_ring -> RingEquiv.localRing is a dubious translation:
-lean 3 declaration is
- forall {A : Type.{u1}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} A] [_inst_2 : LocalRing.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)] [_inst_3 : CommSemiring.{u2} B], (RingEquiv.{u1, u2} A B (Distrib.toHasMul.{u1} A (NonUnitalNonAssocSemiring.toDistrib.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (Distrib.toHasAdd.{u1} A (NonUnitalNonAssocSemiring.toDistrib.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (Distrib.toHasMul.{u2} B (NonUnitalNonAssocSemiring.toDistrib.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3))))) (Distrib.toHasAdd.{u2} B (NonUnitalNonAssocSemiring.toDistrib.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3)))))) -> (LocalRing.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3))
-but is expected to have type
- forall {A : Type.{u2}} {B : Type.{u1}} [_inst_1 : CommSemiring.{u2} A] [_inst_2 : LocalRing.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1)] [_inst_3 : CommSemiring.{u1} B], (RingEquiv.{u2, u1} A B (NonUnitalNonAssocSemiring.toMul.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3)))) (Distrib.toAdd.{u2} A (NonUnitalNonAssocSemiring.toDistrib.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))))) (Distrib.toAdd.{u1} B (NonUnitalNonAssocSemiring.toDistrib.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3)))))) -> (LocalRing.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.local_ring RingEquiv.localRingₓ'. -/
@[reducible]
protected theorem localRing {A B : Type _} [CommSemiring A] [LocalRing A] [CommSemiring B]
(e : A ≃+* B) : LocalRing B :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -155,9 +155,7 @@ instance maximalIdeal.isMaximal : (maximalIdeal R).IsMaximal :=
by
rw [Ideal.isMaximal_iff]
constructor
- · intro h
- apply h
- exact isUnit_one
+ · intro h; apply h; exact isUnit_one
· intro I x hI hx H
erw [Classical.not_not] at hx
rcases hx with ⟨u, rfl⟩
@@ -491,12 +489,7 @@ theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R
by
intro a
obtain ⟨b, hb⟩ := hf (a : S)
- use
- (isUnit_of_map_unit f _
- (by
- rw [hb]
- exact Units.isUnit _)).Unit;
- ext; exact hb
+ use (isUnit_of_map_unit f _ (by rw [hb]; exact Units.isUnit _)).Unit; ext; exact hb
#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHom
section
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -438,10 +438,7 @@ section
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
/- warning: local_ring.local_hom_tfae -> LocalRing.local_hom_TFAE is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.hasSubset.{u2} S) (Set.image.{u1, u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f) (Submodule.carrier.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (HasLiftT.mk.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (CoeTCₓ.coe.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (SetLike.Set.hasCoeT.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toHasLe.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toHasLe.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.instHasSubsetSet.{u2} S) (Set.image.{u1, u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f) (SetLike.coe.{u1, u1} (AddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) R (AddSubmonoid.instSetLikeAddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (Submodule.toAddSubmonoid.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)))) (SetLike.coe.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toLE.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.local_hom_tfae LocalRing.local_hom_TFAEₓ'. -/
/-- A ring homomorphism between local rings is a local ring hom iff it reflects units,
i.e. any preimage of a unit is still a unit. https://stacks.math.columbia.edu/tag/07BJ
@@ -485,10 +482,7 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
#align local_ring.of_surjective LocalRing.of_surjective
/- warning: local_ring.surjective_units_map_of_local_ring_hom -> LocalRing.surjective_units_map_of_local_ringHom is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f)) -> (IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) -> (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MonoidHom.hasCoeToFun.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (Units.map.{u1, u2} R S (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.toMonoidHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) f))))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f)) -> (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MulOneClass.toMul.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (MulOneClass.toMul.{u2} (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MonoidHom.monoidHomClass.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))))) (Units.map.{u1, u2} R S (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHom.toMonoidHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) f))))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHomₓ'. -/
/-- If `f : R →+* S` is a surjective local ring hom, then the induced units map is surjective. -/
theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R →+* S)
@@ -570,10 +564,7 @@ theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f
#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residue
/- warning: local_ring.residue_field.lift_residue_apply -> LocalRing.ResidueField.lift_residue_apply is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_7 : CommRing.{u1} R] [_inst_8 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7))] [_inst_9 : Field.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7)) (Ring.toSemiring.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))) f] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) -> S) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (LocalRing.ResidueField.lift.{u1, u2} R S _inst_7 _inst_8 _inst_9 f _inst_10) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) => R -> (LocalRing.ResidueField.{u1} R _inst_7 _inst_8)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (LocalRing.residue.{u1} R _inst_7 _inst_8) x)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) f x)
-but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) a) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (fun (_x : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) f x)
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_applyₓ'. -/
@[simp]
theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
@@ -618,10 +609,7 @@ theorem map_comp_residue (f : R →+* S) [IsLocalRingHom f] :
-/
/- warning: local_ring.residue_field.map_residue -> LocalRing.ResidueField.map_residue is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => S -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f r))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f r))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residueₓ'. -/
theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
ResidueField.map f (residue R r) = residue S (f r) :=
@@ -629,20 +617,14 @@ theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residue
/- warning: local_ring.residue_field.map_id_apply -> LocalRing.ResidueField.map_id_apply is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) x) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) x) x
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_applyₓ'. -/
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
FunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
/- warning: local_ring.residue_field.map_map -> LocalRing.ResidueField.map_map is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g], Eq.{succ u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g], Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (a : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (fun (_x : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_map LocalRing.ResidueField.map_mapₓ'. -/
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
@@ -680,10 +662,7 @@ theorem mapEquiv.symm (f : R ≃+* S) : (mapEquiv f).symm = mapEquiv f.symm :=
#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symm
/- warning: local_ring.residue_field.map_equiv_trans -> LocalRing.ResidueField.mapEquiv_trans is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (e₂ : RingEquiv.{u2, u3} S T (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) (Distrib.toHasAdd.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5)))), Eq.{max (succ u1) (succ u3)} (RingEquiv.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (Distrib.toHasAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.mapEquiv.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S T (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) (Distrib.toHasAdd.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) e₁ e₂)) (RingEquiv.trans.{u1, u2, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (Distrib.toHasAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (LocalRing.ResidueField.mapEquiv.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 e₂))
-but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (e₁ : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))) (e₂ : RingEquiv.{u2, u3} S T (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (NonUnitalNonAssocRing.toMul.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) (Distrib.toAdd.{u3} T (NonUnitalNonAssocSemiring.toDistrib.{u3} T (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5))))))), Eq.{max (succ u1) (succ u3)} (RingEquiv.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.mapEquiv.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S T (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) (NonUnitalNonAssocRing.toMul.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (Distrib.toAdd.{u3} T (NonUnitalNonAssocSemiring.toDistrib.{u3} T (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))))) e₁ e₂)) (RingEquiv.trans.{u1, u2, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (NonUnitalNonAssocRing.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (Distrib.toAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (LocalRing.ResidueField.mapEquiv.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 e₂))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_transₓ'. -/
@[simp]
theorem mapEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* T) :
@@ -703,10 +682,7 @@ theorem mapEquiv_refl : mapEquiv (RingEquiv.refl R) = RingEquiv.refl _ :=
#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_refl
/- warning: local_ring.residue_field.map_aut -> LocalRing.ResidueField.mapAut is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))], MonoidHom.{u1, u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (RingAut.group.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (RingAut.group.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))], MonoidHom.{u1, u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (RingAut.instGroupRingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (RingAut.instGroupRingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_aut LocalRing.ResidueField.mapAutₓ'. -/
/-- The group homomorphism from `ring_aut R` to `ring_aut k` where `k`
is the residue field of `R`. -/
@@ -727,10 +703,7 @@ instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
/- warning: local_ring.residue_field.residue_smul -> LocalRing.ResidueField.residue_smul is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (G : Type.{u2}) [_inst_7 : Group.{u2} G] [_inst_8 : MulSemiringAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (g : G) (r : R), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) (SMul.smul.{u2, u1} G R (SMulZeroClass.toHasSmul.{u2, u1} G R (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) _inst_8)))) g r)) (SMul.smul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (SMulZeroClass.toHasSmul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddZeroClass.toHasZero.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)) (LocalRing.ResidueField.mulSemiringAction.{u1, u2} R _inst_1 _inst_2 G _inst_7 _inst_8))))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] [_inst_2 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (G : Type.{u1}) [_inst_7 : Group.{u1} G] [_inst_8 : MulSemiringAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (g : G) (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (HSMul.hSMul.{u1, u2, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (instHSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (SMulZeroClass.toSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommMonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommGroupWithZero.toCommMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Semifield.toCommGroupWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toSemifield.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoid.toAddZeroClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))) (LocalRing.ResidueField.instMulSemiringActionResidueFieldToMonoidToDivInvMonoidToSemiringToDivisionSemiringToSemifieldField.{u2, u1} R _inst_1 _inst_2 G _inst_7 _inst_8)))))) g (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) r))
+<too large>
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.residue_smul LocalRing.ResidueField.residue_smulₓ'. -/
@[simp]
theorem residue_smul (g : G) (r : R) : residue R (g • r) = g • residue R r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
! This file was ported from Lean 3 source module ring_theory.ideal.local_ring
-! leanprover-community/mathlib commit ec1c7d810034d4202b0dd239112d1792be9f6fdc
+! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,6 +17,9 @@ import Mathbin.Logic.Equiv.TransferInstance
# Local rings
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Define local rings as commutative rings having a unique maximal ideal.
## Main definitions
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -265,7 +265,7 @@ theorem isUnit_one_sub_self_of_mem_nonunits (a : R) (h : a ∈ nonunits R) : IsU
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f)) -> (LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))
Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective' LocalRing.of_surjective'ₓ'. -/
theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Function.Surjective f) :
LocalRing S :=
@@ -319,7 +319,7 @@ instance isLocalRingHom_id (R : Type _) [Semiring R] : IsLocalRingHom (RingHom.i
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
Case conversion may be inaccurate. Consider using '#align is_unit_map_iff isUnit_map_iffₓ'. -/
@[simp]
theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔ IsUnit a :=
@@ -330,7 +330,7 @@ theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.Mem.{u2, u2} S (Set.{u2} S) (Set.hasMem.{u2} S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Set.{u2} S) (Set.instMembershipSet.{u2} S) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Set.{u2} S) (Set.instMembershipSet.{u2} S) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
Case conversion may be inaccurate. Consider using '#align map_mem_nonunits_iff map_mem_nonunits_iffₓ'. -/
@[simp]
theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
@@ -361,7 +361,7 @@ instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
Case conversion may be inaccurate. Consider using '#align is_unit_of_map_unit isUnit_of_map_unitₓ'. -/
@[simp]
theorem isUnit_of_map_unit (f : R →+* S) [IsLocalRingHom f] (a) (h : IsUnit (f a)) : IsUnit a :=
@@ -372,7 +372,7 @@ theorem isUnit_of_map_unit (f : R →+* S) [IsLocalRingHom f] (a) (h : IsUnit (f
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
Case conversion may be inaccurate. Consider using '#align of_irreducible_map of_irreducible_mapₓ'. -/
theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irreducible (f x)) :
Irreducible x :=
@@ -417,7 +417,7 @@ variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.Mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.Mem.{u2, u2} S (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.hasMem.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.instMembership.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.instMembership.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
Case conversion may be inaccurate. Consider using '#align map_nonunit map_nonunitₓ'. -/
/--
The image of the maximal ideal of the source is contained within the maximal ideal of the target.
@@ -438,7 +438,7 @@ variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.hasSubset.{u2} S) (Set.image.{u1, u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f) (Submodule.carrier.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (HasLiftT.mk.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (CoeTCₓ.coe.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (SetLike.Set.hasCoeT.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toHasLe.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toHasLe.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.instHasSubsetSet.{u2} S) (Set.image.{u1, u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f) (SetLike.coe.{u1, u1} (AddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) R (AddSubmonoid.instSetLikeAddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (Submodule.toAddSubmonoid.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)))) (SetLike.coe.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toLE.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.instHasSubsetSet.{u2} S) (Set.image.{u1, u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f) (SetLike.coe.{u1, u1} (AddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) R (AddSubmonoid.instSetLikeAddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (Submodule.toAddSubmonoid.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)))) (SetLike.coe.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toLE.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
Case conversion may be inaccurate. Consider using '#align local_ring.local_hom_tfae LocalRing.local_hom_TFAEₓ'. -/
/-- A ring homomorphism between local rings is a local ring hom iff it reflects units,
i.e. any preimage of a unit is still a unit. https://stacks.math.columbia.edu/tag/07BJ
@@ -466,7 +466,7 @@ end
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective LocalRing.of_surjectiveₓ'. -/
theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivial S] (f : R →+* S)
[IsLocalRingHom f] (hf : Function.Surjective f) : LocalRing S :=
@@ -485,7 +485,7 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f)) -> (IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) -> (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MonoidHom.hasCoeToFun.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (Units.map.{u1, u2} R S (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.toMonoidHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) f))))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f)) -> (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MulOneClass.toMul.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (MulOneClass.toMul.{u2} (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MonoidHom.monoidHomClass.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))))) (Units.map.{u1, u2} R S (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHom.toMonoidHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) f))))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f)) -> (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MulOneClass.toMul.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (MulOneClass.toMul.{u2} (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MonoidHom.monoidHomClass.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))))) (Units.map.{u1, u2} R S (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHom.toMonoidHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) f))))
Case conversion may be inaccurate. Consider using '#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHomₓ'. -/
/-- If `f : R →+* S` is a surjective local ring hom, then the induced units map is surjective. -/
theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R →+* S)
@@ -570,7 +570,7 @@ theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_7 : CommRing.{u1} R] [_inst_8 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7))] [_inst_9 : Field.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7)) (Ring.toSemiring.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))) f] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) -> S) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (LocalRing.ResidueField.lift.{u1, u2} R S _inst_7 _inst_8 _inst_9 f _inst_10) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) => R -> (LocalRing.ResidueField.{u1} R _inst_7 _inst_8)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (LocalRing.residue.{u1} R _inst_7 _inst_8) x)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) f x)
but is expected to have type
- forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) a) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (fun (_x : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) f x)
+ forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) a) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (fun (_x : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) f x)
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_applyₓ'. -/
@[simp]
theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
@@ -618,7 +618,7 @@ theorem map_comp_residue (f : R →+* S) [IsLocalRingHom f] :
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => S -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f r))
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f r))
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f r))
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residueₓ'. -/
theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
ResidueField.map f (residue R r) = residue S (f r) :=
@@ -629,7 +629,7 @@ theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) x) x
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) x) x
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) x) x
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_applyₓ'. -/
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
FunLike.congr_fun map_id x
@@ -639,7 +639,7 @@ theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
lean 3 declaration is
forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g], Eq.{succ u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
but is expected to have type
- forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g], Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (a : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (fun (_x : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g], Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (a : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (fun (_x : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_map LocalRing.ResidueField.map_mapₓ'. -/
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
@@ -727,7 +727,7 @@ instance : MulSemiringAction G (LocalRing.ResidueField R) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (G : Type.{u2}) [_inst_7 : Group.{u2} G] [_inst_8 : MulSemiringAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (g : G) (r : R), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) (SMul.smul.{u2, u1} G R (SMulZeroClass.toHasSmul.{u2, u1} G R (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) _inst_8)))) g r)) (SMul.smul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (SMulZeroClass.toHasSmul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddZeroClass.toHasZero.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)) (LocalRing.ResidueField.mulSemiringAction.{u1, u2} R _inst_1 _inst_2 G _inst_7 _inst_8))))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] [_inst_2 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (G : Type.{u1}) [_inst_7 : Group.{u1} G] [_inst_8 : MulSemiringAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (g : G) (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (HSMul.hSMul.{u1, u2, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (instHSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (SMulZeroClass.toSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommMonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommGroupWithZero.toCommMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Semifield.toCommGroupWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toSemifield.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoid.toAddZeroClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))) (LocalRing.ResidueField.instMulSemiringActionResidueFieldToMonoidToDivInvMonoidToSemiringToDivisionSemiringToSemifieldField.{u2, u1} R _inst_1 _inst_2 G _inst_7 _inst_8)))))) g (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) r))
+ forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] [_inst_2 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (G : Type.{u1}) [_inst_7 : Group.{u1} G] [_inst_8 : MulSemiringAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (g : G) (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (HSMul.hSMul.{u1, u2, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (instHSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (SMulZeroClass.toSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommMonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommGroupWithZero.toCommMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Semifield.toCommGroupWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toSemifield.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoid.toAddZeroClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))) (LocalRing.ResidueField.instMulSemiringActionResidueFieldToMonoidToDivInvMonoidToSemiringToDivisionSemiringToSemifieldField.{u2, u1} R _inst_1 _inst_2 G _inst_7 _inst_8)))))) g (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) r))
Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.residue_smul LocalRing.ResidueField.residue_smulₓ'. -/
@[simp]
theorem residue_smul (g : G) (r : R) : residue R (g • r) = g • residue R r :=
@@ -742,7 +742,7 @@ end ResidueField
lean 3 declaration is
forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (fun (_x : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) => R -> K) (RingHom.hasCoeToFun.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))) (RingHom.ringHomClass.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
but is expected to have type
- forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => K) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
+ forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => K) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
Case conversion may be inaccurate. Consider using '#align local_ring.ker_eq_maximal_ideal LocalRing.ker_eq_maximalIdealₓ'. -/
theorem ker_eq_maximalIdeal [Field K] (φ : R →+* K) (hφ : Function.Surjective φ) :
φ.ker = maximalIdeal R :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/c89fe2d59ae06402c3f55f978016d1ada444f57e
@@ -38,12 +38,14 @@ universe u v w u'
variable {R : Type u} {S : Type v} {T : Type w} {K : Type u'}
+#print LocalRing /-
/-- A semiring is local if it is nontrivial and `a` or `b` is a unit whenever `a + b = 1`.
Note that `local_ring` is a predicate. -/
class LocalRing (R : Type u) [Semiring R] extends Nontrivial R : Prop where
of_is_unit_or_is_unit_of_add_one ::
isUnit_or_isUnit_of_add_one {a b : R} (h : a + b = 1) : IsUnit a ∨ IsUnit b
#align local_ring LocalRing
+-/
section CommSemiring
@@ -51,17 +53,30 @@ variable [CommSemiring R]
namespace LocalRing
+/- warning: local_ring.of_is_unit_or_is_unit_of_is_unit_add -> LocalRing.of_isUnit_or_isUnit_of_isUnit_add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_is_unit_or_is_unit_of_is_unit_add LocalRing.of_isUnit_or_isUnit_of_isUnit_addₓ'. -/
theorem of_isUnit_or_isUnit_of_isUnit_add [Nontrivial R]
(h : ∀ a b : R, IsUnit (a + b) → IsUnit a ∨ IsUnit b) : LocalRing R :=
⟨fun a b hab => h a b <| hab.symm ▸ isUnit_one⟩
#align local_ring.of_is_unit_or_is_unit_of_is_unit_add LocalRing.of_isUnit_or_isUnit_of_isUnit_add
+/- warning: local_ring.of_nonunits_add -> LocalRing.of_nonunits_add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R) (b : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_nonunits_add LocalRing.of_nonunits_addₓ'. -/
/-- A semiring is local if it is nontrivial and the set of nonunits is closed under the addition. -/
theorem of_nonunits_add [Nontrivial R]
(h : ∀ a b : R, a ∈ nonunits R → b ∈ nonunits R → a + b ∈ nonunits R) : LocalRing R :=
⟨fun a b hab => or_iff_not_and_not.2 fun H => h a b H.1 H.2 <| hab.symm ▸ isUnit_one⟩
#align local_ring.of_nonunits_add LocalRing.of_nonunits_add
+#print LocalRing.of_unique_max_ideal /-
/-- A semiring is local if it has a unique maximal ideal. -/
theorem of_unique_max_ideal (h : ∃! I : Ideal R, I.IsMaximal) : LocalRing R :=
@of_nonunits_add _ _
@@ -76,7 +91,14 @@ theorem of_unique_max_ideal (h : ∃! I : Ideal R, I.IsMaximal) : LocalRing R :=
have ymemI : y ∈ I := Iuniq Iy Iymax ▸ Hy
Imax.1.1 <| I.eq_top_of_isUnit_mem (I.add_mem xmemI ymemI) H
#align local_ring.of_unique_max_ideal LocalRing.of_unique_max_ideal
+-/
+/- warning: local_ring.of_unique_nonzero_prime -> LocalRing.of_unique_nonzero_prime is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R], (ExistsUnique.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (P : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => And (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) P (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Ideal.IsPrime.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) P))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R], (ExistsUnique.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (fun (P : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) => And (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) P (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (Ideal.IsPrime.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1) P))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_unique_nonzero_prime LocalRing.of_unique_nonzero_primeₓ'. -/
theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPrime P) : LocalRing R :=
of_unique_max_ideal
(by
@@ -90,6 +112,12 @@ theorem of_unique_nonzero_prime (h : ∃! P : Ideal R, P ≠ ⊥ ∧ Ideal.IsPri
variable [LocalRing R]
+/- warning: local_ring.is_unit_or_is_unit_of_is_unit_add -> LocalRing.isUnit_or_isUnit_of_isUnit_add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b)) -> (Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) b))
+Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_addₓ'. -/
theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a ∨ IsUnit b :=
by
rcases h with ⟨u, hu⟩
@@ -97,12 +125,19 @@ theorem isUnit_or_isUnit_of_isUnit_add {a b : R} (h : IsUnit (a + b)) : IsUnit a
apply Or.imp _ _ (is_unit_or_is_unit_of_add_one hu) <;> exact isUnit_of_mul_isUnit_right
#align local_ring.is_unit_or_is_unit_of_is_unit_add LocalRing.isUnit_or_isUnit_of_isUnit_add
+/- warning: local_ring.nonunits_add -> LocalRing.nonunits_add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {a : R} {b : R}, (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) b (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))) a b) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align local_ring.nonunits_add LocalRing.nonunits_addₓ'. -/
theorem nonunits_add {a b : R} (ha : a ∈ nonunits R) (hb : b ∈ nonunits R) : a + b ∈ nonunits R :=
fun H => not_or_of_not ha hb (isUnit_or_isUnit_of_isUnit_add H)
#align local_ring.nonunits_add LocalRing.nonunits_add
variable (R)
+#print LocalRing.maximalIdeal /-
/-- The ideal of elements that are not units. -/
def maximalIdeal : Ideal R where
carrier := nonunits R
@@ -110,7 +145,9 @@ def maximalIdeal : Ideal R where
add_mem' x y hx hy := nonunits_add hx hy
smul_mem' a x := mul_mem_nonunits_right
#align local_ring.maximal_ideal LocalRing.maximalIdeal
+-/
+#print LocalRing.maximalIdeal.isMaximal /-
instance maximalIdeal.isMaximal : (maximalIdeal R).IsMaximal :=
by
rw [Ideal.isMaximal_iff]
@@ -123,29 +160,48 @@ instance maximalIdeal.isMaximal : (maximalIdeal R).IsMaximal :=
rcases hx with ⟨u, rfl⟩
simpa using I.mul_mem_left (↑u⁻¹) H
#align local_ring.maximal_ideal.is_maximal LocalRing.maximalIdeal.isMaximal
+-/
+#print LocalRing.maximal_ideal_unique /-
theorem maximal_ideal_unique : ∃! I : Ideal R, I.IsMaximal :=
⟨maximalIdeal R, maximalIdeal.isMaximal R, fun I hI =>
hI.eq_of_le (maximalIdeal.isMaximal R).1.1 fun x hx => hI.1.1 ∘ I.eq_top_of_isUnit_mem hx⟩
#align local_ring.maximal_ideal_unique LocalRing.maximal_ideal_unique
+-/
variable {R}
+#print LocalRing.eq_maximalIdeal /-
theorem eq_maximalIdeal {I : Ideal R} (hI : I.IsMaximal) : I = maximalIdeal R :=
ExistsUnique.unique (maximal_ideal_unique R) hI <| maximalIdeal.isMaximal R
#align local_ring.eq_maximal_ideal LocalRing.eq_maximalIdeal
+-/
+/- warning: local_ring.le_maximal_ideal -> LocalRing.le_maximalIdeal is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {J : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) J (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasTop.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toHasLe.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) J (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] {J : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)}, (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) J (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instTopSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) -> (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) J (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))
+Case conversion may be inaccurate. Consider using '#align local_ring.le_maximal_ideal LocalRing.le_maximalIdealₓ'. -/
theorem le_maximalIdeal {J : Ideal R} (hJ : J ≠ ⊤) : J ≤ maximalIdeal R :=
by
rcases Ideal.exists_le_maximal J hJ with ⟨M, hM1, hM2⟩
rwa [← eq_maximal_ideal hM1]
#align local_ring.le_maximal_ideal LocalRing.le_maximalIdeal
+#print LocalRing.mem_maximalIdeal /-
@[simp]
theorem mem_maximalIdeal (x) : x ∈ maximalIdeal R ↔ x ∈ nonunits R :=
Iff.rfl
#align local_ring.mem_maximal_ideal LocalRing.mem_maximalIdeal
+-/
+/- warning: local_ring.is_field_iff_maximal_ideal_eq -> LocalRing.isField_iff_maximalIdeal_eq is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)], Iff (IsField.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)], Iff (IsField.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align local_ring.is_field_iff_maximal_ideal_eq LocalRing.isField_iff_maximalIdeal_eqₓ'. -/
theorem isField_iff_maximalIdeal_eq : IsField R ↔ maximalIdeal R = ⊥ :=
not_iff_not.mp
⟨Ring.ne_bot_of_isMaximal_of_not_isField inferInstance, fun h =>
@@ -162,6 +218,12 @@ variable [CommRing R]
namespace LocalRing
+/- warning: local_ring.of_is_unit_or_is_unit_one_sub_self -> LocalRing.of_isUnit_or_isUnit_one_sub_self is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R), Or (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))) -> (LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : Nontrivial.{u1} R], (forall (a : R), Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))) -> (LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_is_unit_or_is_unit_one_sub_self LocalRing.of_isUnit_or_isUnit_one_sub_selfₓ'. -/
theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a ∨ IsUnit (1 - a)) :
LocalRing R :=
⟨fun a b hab => add_sub_cancel' a b ▸ hab.symm ▸ h a⟩
@@ -169,18 +231,42 @@ theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a
variable [LocalRing R]
+/- warning: local_ring.is_unit_or_is_unit_one_sub_self -> LocalRing.isUnit_or_isUnit_one_sub_self is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), Or (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a) (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), Or (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))
+Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_selfₓ'. -/
theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel'_right a 1).symm ▸ isUnit_one
#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_self
+/- warning: local_ring.is_unit_of_mem_nonunits_one_sub_self -> LocalRing.isUnit_of_mem_nonunits_one_sub_self is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a) (nonunits.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) -> (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) a)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) a)
+Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_selfₓ'. -/
theorem isUnit_of_mem_nonunits_one_sub_self (a : R) (h : 1 - a ∈ nonunits R) : IsUnit a :=
or_iff_not_imp_right.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_of_mem_nonunits_one_sub_self LocalRing.isUnit_of_mem_nonunits_one_sub_self
+/- warning: local_ring.is_unit_one_sub_self_of_mem_nonunits -> LocalRing.isUnit_one_sub_self_of_mem_nonunits is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (a : R), (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)))) -> (IsUnit.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) a))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (a : R), (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (CommRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) a))
+Case conversion may be inaccurate. Consider using '#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunitsₓ'. -/
theorem isUnit_one_sub_self_of_mem_nonunits (a : R) (h : a ∈ nonunits R) : IsUnit (1 - a) :=
or_iff_not_imp_left.1 (isUnit_or_isUnit_one_sub_self a) h
#align local_ring.is_unit_one_sub_self_of_mem_nonunits LocalRing.isUnit_one_sub_self_of_mem_nonunits
+/- warning: local_ring.of_surjective' -> LocalRing.of_surjective' is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f)) -> (LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective' LocalRing.of_surjective'ₓ'. -/
theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Function.Surjective f) :
LocalRing S :=
of_isUnit_or_isUnit_one_sub_self
@@ -192,6 +278,12 @@ theorem of_surjective' [CommRing S] [Nontrivial S] (f : R →+* S) (hf : Functio
apply f.is_unit_map)
#align local_ring.of_surjective' LocalRing.of_surjective'
+/- warning: local_ring.jacobson_eq_maximal_ideal -> LocalRing.jacobson_eq_maximalIdeal is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.jacobson.{u1} R (CommRing.toRing.{u1} R _inst_1) I) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Ideal.jacobson.{u1} R (CommRing.toRing.{u1} R _inst_1) I) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
+Case conversion may be inaccurate. Consider using '#align local_ring.jacobson_eq_maximal_ideal LocalRing.jacobson_eq_maximalIdealₓ'. -/
theorem jacobson_eq_maximalIdeal (I : Ideal R) (h : I ≠ ⊤) :
I.jacobson = LocalRing.maximalIdeal R :=
by
@@ -204,48 +296,84 @@ end LocalRing
end CommRing
+#print IsLocalRingHom /-
/-- A local ring homomorphism is a homomorphism `f` between local rings such that `a` in the domain
is a unit if `f a` is a unit for any `a`. See `local_ring.local_hom_tfae` for other equivalent
definitions. -/
class IsLocalRingHom [Semiring R] [Semiring S] (f : R →+* S) : Prop where
map_nonunit : ∀ a, IsUnit (f a) → IsUnit a
#align is_local_ring_hom IsLocalRingHom
+-/
section
variable [Semiring R] [Semiring S] [Semiring T]
+#print isLocalRingHom_id /-
instance isLocalRingHom_id (R : Type _) [Semiring R] : IsLocalRingHom (RingHom.id R)
where map_nonunit a := id
#align is_local_ring_hom_id isLocalRingHom_id
+-/
+/- warning: is_unit_map_iff -> isUnit_map_iff is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+Case conversion may be inaccurate. Consider using '#align is_unit_map_iff isUnit_map_iffₓ'. -/
@[simp]
theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔ IsUnit a :=
⟨IsLocalRingHom.map_nonunit a, f.isUnit_map⟩
#align is_unit_map_iff isUnit_map_iff
+/- warning: map_mem_nonunits_iff -> map_mem_nonunits_iff is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.Mem.{u2, u2} S (Set.{u2} S) (Set.hasMem.{u2} S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.Mem.{u1, u1} R (Set.{u1} R) (Set.hasMem.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), Iff (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Set.{u2} S) (Set.instMembershipSet.{u2} S) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a) (nonunits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) a (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))
+Case conversion may be inaccurate. Consider using '#align map_mem_nonunits_iff map_mem_nonunits_iffₓ'. -/
@[simp]
theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
f a ∈ nonunits S ↔ a ∈ nonunits R :=
⟨fun h ha => h <| (isUnit_map_iff f a).mpr ha, fun h ha => h <| (isUnit_map_iff f a).mp ha⟩
#align map_mem_nonunits_iff map_mem_nonunits_iff
+#print isLocalRingHom_comp /-
instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g] [IsLocalRingHom f] :
IsLocalRingHom (g.comp f)
where map_nonunit a := IsLocalRingHom.map_nonunit a ∘ IsLocalRingHom.map_nonunit (f a)
#align is_local_ring_hom_comp isLocalRingHom_comp
+-/
+/- warning: is_local_ring_hom_equiv -> isLocalRingHom_equiv is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))), IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))))))) f)
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))), IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 (RingHomClass.toRingHom.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))))) f)
+Case conversion may be inaccurate. Consider using '#align is_local_ring_hom_equiv isLocalRingHom_equivₓ'. -/
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
where map_nonunit a ha := by
convert(f.symm : S →+* R).isUnit_map ha
exact (RingEquiv.symm_apply_apply f a).symm
#align is_local_ring_hom_equiv isLocalRingHom_equiv
+/- warning: is_unit_of_map_unit -> isUnit_of_map_unit is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [_inst_4 : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] (a : R), (IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) a)
+Case conversion may be inaccurate. Consider using '#align is_unit_of_map_unit isUnit_of_map_unitₓ'. -/
@[simp]
theorem isUnit_of_map_unit (f : R →+* S) [IsLocalRingHom f] (a) (h : IsUnit (f a)) : IsUnit a :=
IsLocalRingHom.map_nonunit a h
#align is_unit_of_map_unit isUnit_of_map_unit
+/- warning: of_irreducible_map -> of_irreducible_map is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) [h : IsLocalRingHom.{u1, u2} R S _inst_1 _inst_2 f] {x : R}, (Irreducible.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2)) R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f x)) -> (Irreducible.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) x)
+Case conversion may be inaccurate. Consider using '#align of_irreducible_map of_irreducible_mapₓ'. -/
theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irreducible (f x)) :
Irreducible x :=
⟨fun h => hfx.not_unit <| IsUnit.map f h, fun p q hx =>
@@ -253,11 +381,19 @@ theorem of_irreducible_map (f : R →+* S) [h : IsLocalRingHom f] {x} (hfx : Irr
Or.imp (H p) (H q) <| hfx.isUnit_or_isUnit <| f.map_mul p q ▸ congr_arg f hx⟩
#align of_irreducible_map of_irreducible_map
+#print isLocalRingHom_of_comp /-
theorem isLocalRingHom_of_comp (f : R →+* S) (g : S →+* T) [IsLocalRingHom (g.comp f)] :
IsLocalRingHom f :=
⟨fun a ha => (isUnit_map_iff (g.comp f) _).mp (g.isUnit_map ha)⟩
#align is_local_ring_hom_of_comp isLocalRingHom_of_comp
+-/
+/- warning: ring_hom.domain_local_ring -> RingHom.domain_localRing is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_4 : CommSemiring.{u1} R] [_inst_5 : CommSemiring.{u2} S] [H : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_5)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_4)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_5))) [_inst_6 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_4) (CommSemiring.toSemiring.{u2} S _inst_5) f], LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_4)
+but is expected to have type
+ forall {R : Type.{u2}} {S : Type.{u1}} [_inst_4 : CommSemiring.{u2} R] [_inst_5 : CommSemiring.{u1} S] [H : LocalRing.{u1} S (CommSemiring.toSemiring.{u1} S _inst_5)] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_4)) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_5))) [_inst_6 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R _inst_4) (CommSemiring.toSemiring.{u1} S _inst_5) f], LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R _inst_4)
+Case conversion may be inaccurate. Consider using '#align ring_hom.domain_local_ring RingHom.domain_localRingₓ'. -/
/-- If `f : R →+* S` is a local ring hom, then `R` is a local ring if `S` is. -/
theorem RingHom.domain_localRing {R S : Type _} [CommSemiring R] [CommSemiring S] [H : LocalRing S]
(f : R →+* S) [IsLocalRingHom f] : LocalRing R :=
@@ -277,6 +413,12 @@ open LocalRing
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
+/- warning: map_nonunit -> map_nonunit is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.Mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.Mem.{u2, u2} S (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.hasMem.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f] (a : R), (Membership.mem.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) R (Submodule.setLike.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) a (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) -> (Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (SetLike.instMembership.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f a) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))
+Case conversion may be inaccurate. Consider using '#align map_nonunit map_nonunitₓ'. -/
/--
The image of the maximal ideal of the source is contained within the maximal ideal of the target.
-/
@@ -292,10 +434,16 @@ section
variable [CommSemiring R] [LocalRing R] [CommSemiring S] [LocalRing S]
+/- warning: local_ring.local_hom_tfae -> LocalRing.local_hom_TFAE is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.hasSubset.{u2} S) (Set.image.{u1, u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f) (Submodule.carrier.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (HasLiftT.mk.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (CoeTCₓ.coe.{succ u2, succ u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Set.{u2} S) (SetLike.Set.hasCoeT.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toHasLe.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toHasLe.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))), List.TFAE (List.cons.{0} Prop (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f) (List.cons.{0} Prop (HasSubset.Subset.{u2} (Set.{u2} S) (Set.instHasSubsetSet.{u2} S) (Set.image.{u1, u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f) (SetLike.coe.{u1, u1} (AddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) R (AddSubmonoid.instSetLikeAddSubmonoid.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (Submodule.toAddSubmonoid.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)))) (SetLike.coe.{u2, u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) S (Submodule.setLike.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (LE.le.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Preorder.toLE.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (PartialOrder.toPreorder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Ideal.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (Submodule.completeLattice.{u2, u2} S S (CommSemiring.toSemiring.{u2} S _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (Semiring.toModule.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))))))) (Ideal.map.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (List.cons.{0} Prop (LE.le.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Preorder.toLE.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (PartialOrder.toPreorder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Submodule.completeLattice.{u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))))) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4))) (List.cons.{0} Prop (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f (LocalRing.maximalIdeal.{u2} S _inst_3 _inst_4)) (LocalRing.maximalIdeal.{u1} R _inst_1 _inst_2)) (List.nil.{0} Prop))))))
+Case conversion may be inaccurate. Consider using '#align local_ring.local_hom_tfae LocalRing.local_hom_TFAEₓ'. -/
/-- A ring homomorphism between local rings is a local ring hom iff it reflects units,
i.e. any preimage of a unit is still a unit. https://stacks.math.columbia.edu/tag/07BJ
-/
-theorem local_hom_tFAE (f : R →+* S) :
+theorem local_hom_TFAE (f : R →+* S) :
TFAE
[IsLocalRingHom f, f '' (maximalIdeal R).1 ⊆ maximalIdeal S,
(maximalIdeal R).map f ≤ maximalIdeal S, maximalIdeal R ≤ (maximalIdeal S).comap f,
@@ -310,10 +458,16 @@ theorem local_hom_tFAE (f : R →+* S) :
exact not_iff_not.2 (isUnit_map_iff f x)
tfae_have 5 → 4; exact fun h => le_of_eq h.symm
tfae_finish
-#align local_ring.local_hom_tfae LocalRing.local_hom_tFAE
+#align local_ring.local_hom_tfae LocalRing.local_hom_TFAE
end
+/- warning: local_ring.of_surjective -> LocalRing.of_surjective is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)] [_inst_3 : CommSemiring.{u2} S] [_inst_4 : Nontrivial.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) [_inst_5 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S _inst_3) f], (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3)))))) f)) -> (LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S _inst_3))
+Case conversion may be inaccurate. Consider using '#align local_ring.of_surjective LocalRing.of_surjectiveₓ'. -/
theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivial S] (f : R →+* S)
[IsLocalRingHom f] (hf : Function.Surjective f) : LocalRing S :=
of_isUnit_or_isUnit_of_isUnit_add
@@ -327,6 +481,12 @@ theorem of_surjective [CommSemiring R] [LocalRing R] [CommSemiring S] [Nontrivia
f.is_unit_map)
#align local_ring.of_surjective LocalRing.of_surjective
+/- warning: local_ring.surjective_units_map_of_local_ring_hom -> LocalRing.surjective_units_map_of_local_ringHom is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))) f)) -> (IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : MonoidHom.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) -> (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (MonoidHom.hasCoeToFun.{u1, u2} (Units.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2))) (Units.mulOneClass.{u1} R (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Units.mulOneClass.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (Units.map.{u1, u2} R S (Ring.toMonoid.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.toMonoidHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))) f))))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : CommRing.{u2} S] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))), (Function.Surjective.{succ u1, succ u2} R S (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))))) f)) -> (IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) f) -> (Function.Surjective.{succ u1, succ u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (fun (_x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) => Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MulOneClass.toMul.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (MulOneClass.toMul.{u2} (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (MonoidHom.monoidHomClass.{u1, u2} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (Units.instMulOneClassUnits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (Units.instMulOneClassUnits.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))))) (Units.map.{u1, u2} R S (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHom.toMonoidHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) f))))
+Case conversion may be inaccurate. Consider using '#align local_ring.surjective_units_map_of_local_ring_hom LocalRing.surjective_units_map_of_local_ringHomₓ'. -/
/-- If `f : R →+* S` is a surjective local ring hom, then the induced units map is surjective. -/
theorem surjective_units_map_of_local_ringHom [CommRing R] [CommRing S] (f : R →+* S)
(hf : Function.Surjective f) (h : IsLocalRingHom f) :
@@ -346,27 +506,37 @@ section
variable (R) [CommRing R] [LocalRing R] [CommRing S] [LocalRing S] [CommRing T] [LocalRing T]
+#print LocalRing.ResidueField /-
/-- The residue field of a local ring is the quotient of the ring by its maximal ideal. -/
def ResidueField :=
R ⧸ maximalIdeal R deriving Ring, CommRing, Inhabited
#align local_ring.residue_field LocalRing.ResidueField
+-/
+#print LocalRing.ResidueField.field /-
noncomputable instance ResidueField.field : Field (ResidueField R) :=
Ideal.Quotient.field (maximalIdeal R)
#align local_ring.residue_field.field LocalRing.ResidueField.field
+-/
+#print LocalRing.residue /-
/-- The quotient map from a local ring to its residue field. -/
def residue : R →+* ResidueField R :=
Ideal.Quotient.mk _
#align local_ring.residue LocalRing.residue
+-/
+#print LocalRing.ResidueField.algebra /-
instance ResidueField.algebra : Algebra R (ResidueField R) :=
Ideal.Quotient.algebra _
#align local_ring.residue_field.algebra LocalRing.ResidueField.algebra
+-/
+#print LocalRing.ResidueField.algebraMap_eq /-
theorem ResidueField.algebraMap_eq : algebraMap R (ResidueField R) = residue R :=
rfl
#align local_ring.residue_field.algebra_map_eq LocalRing.ResidueField.algebraMap_eq
+-/
instance : IsLocalRingHom (LocalRing.residue R) :=
⟨fun a ha =>
@@ -376,24 +546,39 @@ variable {R}
namespace ResidueField
+#print LocalRing.ResidueField.lift /-
/-- A local ring homomorphism into a field can be descended onto the residue field. -/
def lift {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S) [IsLocalRingHom f] :
LocalRing.ResidueField R →+* S :=
Ideal.Quotient.lift _ f fun a ha =>
by_contradiction fun h => ha (isUnit_of_map_unit f a (isUnit_iff_ne_zero.mpr h))
#align local_ring.residue_field.lift LocalRing.ResidueField.lift
+-/
+/- warning: local_ring.residue_field.lift_comp_residue -> LocalRing.ResidueField.lift_comp_residue is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_7 : CommRing.{u1} R] [_inst_8 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7))] [_inst_9 : Field.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7)) (Ring.toSemiring.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))) f], Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (RingHom.comp.{u1, u1, u2} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9)))) (LocalRing.ResidueField.lift.{u1, u2} R S _inst_7 _inst_8 _inst_9 f _inst_10) (LocalRing.residue.{u1} R _inst_7 _inst_8)) f
+but is expected to have type
+ forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f], Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHom.comp.{u2, u2, u1} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (LocalRing.residue.{u2} R _inst_7 _inst_8)) f
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residueₓ'. -/
theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] : (lift f).comp (residue R) = f :=
RingHom.ext fun _ => rfl
#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residue
+/- warning: local_ring.residue_field.lift_residue_apply -> LocalRing.ResidueField.lift_residue_apply is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_7 : CommRing.{u1} R] [_inst_8 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7))] [_inst_9 : Field.{u2} S] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_7)) (Ring.toSemiring.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))) f] (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) -> S) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) S (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (LocalRing.ResidueField.lift.{u1, u2} R S _inst_7 _inst_8 _inst_9 f _inst_10) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) => R -> (LocalRing.ResidueField.{u1} R _inst_7 _inst_8)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_7 _inst_8) (LocalRing.ResidueField.ring.{u1} R _inst_7 _inst_8)))) (LocalRing.residue.{u1} R _inst_7 _inst_8) x)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_7))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (DivisionRing.toRing.{u2} S (Field.toDivisionRing.{u2} S _inst_9))))) f x)
+but is expected to have type
+ forall {R : Type.{u2}} {S : Type.{u1}} [_inst_7 : CommRing.{u2} R] [_inst_8 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))] [_inst_9 : Field.{u1} S] (f : RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) [_inst_10 : IsLocalRingHom.{u2, u1} R S (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)) (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))) f] (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) a) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (fun (_x : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} R _inst_7 _inst_8) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) S (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) (LocalRing.ResidueField.lift.{u2, u1} R S _inst_7 _inst_8 _inst_9 f _inst_10) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_7 _inst_8) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8)))))) R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_7 _inst_8) (LocalRing.ResidueField.field.{u2} R _inst_7 _inst_8))))))))) (LocalRing.residue.{u2} R _inst_7 _inst_8) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9))))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_7))) (Semiring.toNonAssocSemiring.{u1} S (DivisionSemiring.toSemiring.{u1} S (Semifield.toDivisionSemiring.{u1} S (Field.toSemifield.{u1} S _inst_9)))))))) f x)
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_applyₓ'. -/
@[simp]
theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] (x) : lift f (residue R x) = f x :=
rfl
#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_apply
+#print LocalRing.ResidueField.map /-
/-- The map on residue fields induced by a local homomorphism between local rings -/
def map (f : R →+* S) [IsLocalRingHom f] : ResidueField R →+* ResidueField S :=
Ideal.Quotient.lift (maximalIdeal R) ((Ideal.Quotient.mk _).comp f) fun a ha =>
@@ -401,7 +586,9 @@ def map (f : R →+* S) [IsLocalRingHom f] : ResidueField R →+* ResidueField S
erw [Ideal.Quotient.eq_zero_iff_mem]
exact map_nonunit f a ha
#align local_ring.residue_field.map LocalRing.ResidueField.map
+-/
+#print LocalRing.ResidueField.map_id /-
/-- Applying `residue_field.map` to the identity ring homomorphism gives the identity
ring homomorphism. -/
@[simp]
@@ -409,34 +596,63 @@ theorem map_id :
LocalRing.ResidueField.map (RingHom.id R) = RingHom.id (LocalRing.ResidueField R) :=
Ideal.Quotient.ringHom_ext <| RingHom.ext fun x => rfl
#align local_ring.residue_field.map_id LocalRing.ResidueField.map_id
+-/
+#print LocalRing.ResidueField.map_comp /-
/-- The composite of two `residue_field.map`s is the `residue_field.map` of the composite. -/
theorem map_comp (f : T →+* R) (g : R →+* S) [IsLocalRingHom f] [IsLocalRingHom g] :
LocalRing.ResidueField.map (g.comp f) =
(LocalRing.ResidueField.map g).comp (LocalRing.ResidueField.map f) :=
Ideal.Quotient.ringHom_ext <| RingHom.ext fun x => rfl
#align local_ring.residue_field.map_comp LocalRing.ResidueField.map_comp
+-/
+#print LocalRing.ResidueField.map_comp_residue /-
theorem map_comp_residue (f : R →+* S) [IsLocalRingHom f] :
(ResidueField.map f).comp (residue R) = (residue S).comp f :=
rfl
#align local_ring.residue_field.map_comp_residue LocalRing.ResidueField.map_comp_residue
+-/
+/- warning: local_ring.residue_field.map_residue -> LocalRing.ResidueField.map_residue is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (coeFn.{succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => S -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (fun (_x : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) f r))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u2, u2} S (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.residue.{u2} S _inst_3 _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (RingHom.instRingHomClassRingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))))))) f r))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residueₓ'. -/
theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
ResidueField.map f (residue R r) = residue S (f r) :=
rfl
#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residue
+/- warning: local_ring.residue_field.map_id_apply -> LocalRing.ResidueField.map_id_apply is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))) x) x
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) x) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u1} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.map.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (isLocalRingHom_id.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) x) x
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_applyₓ'. -/
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
FunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
+/- warning: local_ring.residue_field.map_map -> LocalRing.ResidueField.map_map is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g], Eq.{succ u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (fun (_x : RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u2} S _inst_3 _inst_4)) (RingHom.hasCoeToFun.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4)))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (fun (_x : RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) => (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) -> (LocalRing.ResidueField.{u3} T _inst_5 _inst_6)) (RingHom.hasCoeToFun.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (NonAssocRing.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))) (NonAssocRing.toNonAssocSemiring.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3)) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (f : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)))) (g : RingHom.{u2, u3} S T (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))) (x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) [_inst_7 : IsLocalRingHom.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) f] [_inst_8 : IsLocalRingHom.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g], Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (a : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (fun (_x : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u2} S _inst_3 _inst_4) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u3, u2, u3} (RingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u2, u3} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 g _inst_8) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u2} S _inst_3 _inst_4) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))) (RingHom.instRingHomClassRingHom.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4))))))))) (LocalRing.ResidueField.map.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f _inst_7) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (fun (_x : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : LocalRing.ResidueField.{u1} R _inst_1 _inst_2) => LocalRing.ResidueField.{u3} T _inst_5 _inst_6) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))) (NonUnitalNonAssocSemiring.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))) (RingHom.instRingHomClassRingHom.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toSemifield.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))) (Semiring.toNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionSemiring.toSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Semifield.toDivisionSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toSemifield.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.map.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingHom.comp.{u1, u2, u3} R S T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))) (Semiring.toNonAssocSemiring.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))) g f) (isLocalRingHom_comp.{u1, u2, u3} R S T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3)) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)) g f _inst_8 _inst_7)) x)
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_map LocalRing.ResidueField.map_mapₓ'. -/
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
[IsLocalRingHom g] : map g (map f x) = map (g.comp f) x :=
FunLike.congr_fun (map_comp f g).symm x
#align local_ring.residue_field.map_map LocalRing.ResidueField.map_map
+/- warning: local_ring.residue_field.map_equiv -> LocalRing.ResidueField.mapEquiv is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))) -> (RingEquiv.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))) -> (RingEquiv.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv LocalRing.ResidueField.mapEquivₓ'. -/
/-- A ring isomorphism defines an isomorphism of residue fields. -/
@[simps apply]
def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueField S
@@ -449,22 +665,46 @@ def mapEquiv (f : R ≃+* S) : LocalRing.ResidueField R ≃+* LocalRing.ResidueF
map_add' := RingHom.map_add _
#align local_ring.residue_field.map_equiv LocalRing.ResidueField.mapEquiv
+/- warning: local_ring.residue_field.map_equiv.symm -> LocalRing.ResidueField.mapEquiv.symm is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (RingEquiv.symm.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f)) (LocalRing.ResidueField.mapEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) f))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))), Eq.{max (succ u1) (succ u2)} (RingEquiv.{u2, u1} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (RingEquiv.symm.{u1, u2} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f)) (LocalRing.ResidueField.mapEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) f))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symmₓ'. -/
@[simp]
theorem mapEquiv.symm (f : R ≃+* S) : (mapEquiv f).symm = mapEquiv f.symm :=
rfl
#align local_ring.residue_field.map_equiv.symm LocalRing.ResidueField.mapEquiv.symm
+/- warning: local_ring.residue_field.map_equiv_trans -> LocalRing.ResidueField.mapEquiv_trans is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (e₂ : RingEquiv.{u2, u3} S T (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) (Distrib.toHasAdd.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5)))), Eq.{max (succ u1) (succ u3)} (RingEquiv.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (Distrib.toHasAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6)))) (LocalRing.ResidueField.mapEquiv.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S T (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasAdd.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_3))) (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) (Distrib.toHasAdd.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5))) e₁ e₂)) (RingEquiv.trans.{u1, u2, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.ring.{u2} S _inst_3 _inst_4))) (Distrib.toHasMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (Distrib.toHasAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.ring.{u3} T _inst_5 _inst_6))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (LocalRing.ResidueField.mapEquiv.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 e₂))
+but is expected to have type
+ forall {R : Type.{u1}} {S : Type.{u2}} {T : Type.{u3}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_3 : CommRing.{u2} S] [_inst_4 : LocalRing.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_3))] [_inst_5 : CommRing.{u3} T] [_inst_6 : LocalRing.{u3} T (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (e₁ : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3))))))) (e₂ : RingEquiv.{u2, u3} S T (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (NonUnitalNonAssocRing.toMul.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) (Distrib.toAdd.{u3} T (NonUnitalNonAssocSemiring.toDistrib.{u3} T (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5))))))), Eq.{max (succ u1) (succ u3)} (RingEquiv.{u1, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6))))))))) (LocalRing.ResidueField.mapEquiv.{u1, u3} R T _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S T (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_3)))))) (NonUnitalNonAssocRing.toMul.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (Distrib.toAdd.{u3} T (NonUnitalNonAssocSemiring.toDistrib.{u3} T (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} T (NonAssocRing.toNonUnitalNonAssocRing.{u3} T (Ring.toNonAssocRing.{u3} T (CommRing.toRing.{u3} T _inst_5)))))) e₁ e₂)) (RingEquiv.trans.{u1, u2, u3} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocSemiring.toDistrib.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Ring.toNonAssocRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (DivisionRing.toRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (Field.toDivisionRing.{u2} (LocalRing.ResidueField.{u2} S _inst_3 _inst_4) (LocalRing.ResidueField.field.{u2} S _inst_3 _inst_4)))))))) (NonUnitalNonAssocRing.toMul.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))) (Distrib.toAdd.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocSemiring.toDistrib.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (NonAssocRing.toNonUnitalNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Ring.toNonAssocRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (DivisionRing.toRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (Field.toDivisionRing.{u3} (LocalRing.ResidueField.{u3} T _inst_5 _inst_6) (LocalRing.ResidueField.field.{u3} T _inst_5 _inst_6)))))))) (LocalRing.ResidueField.mapEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (LocalRing.ResidueField.mapEquiv.{u2, u3} S T _inst_3 _inst_4 _inst_5 _inst_6 e₂))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_transₓ'. -/
@[simp]
theorem mapEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* T) :
mapEquiv (e₁.trans e₂) = (mapEquiv e₁).trans (mapEquiv e₂) :=
RingEquiv.toRingHom_injective <| map_comp (e₁ : R →+* S) (e₂ : S →+* T)
#align local_ring.residue_field.map_equiv_trans LocalRing.ResidueField.mapEquiv_trans
+/- warning: local_ring.residue_field.map_equiv_refl -> LocalRing.ResidueField.mapEquiv_refl is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))], Eq.{succ u1} (RingEquiv.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.ResidueField.mapEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (RingEquiv.refl.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))], Eq.{succ u1} (RingEquiv.{u1, u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (LocalRing.ResidueField.mapEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.refl.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) (RingEquiv.refl.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))))))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_reflₓ'. -/
@[simp]
theorem mapEquiv_refl : mapEquiv (RingEquiv.refl R) = RingEquiv.refl _ :=
RingEquiv.toRingHom_injective map_id
#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_refl
+/- warning: local_ring.residue_field.map_aut -> LocalRing.ResidueField.mapAut is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))], MonoidHom.{u1, u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (RingAut.group.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (RingAut.group.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Distrib.toHasMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))) (Distrib.toHasAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))], MonoidHom.{u1, u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (RingAut.instGroupRingAut.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) (Monoid.toMulOneClass.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (DivInvMonoid.toMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (Group.toDivInvMonoid.{u1} (RingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))) (RingAut.instGroupRingAut.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2)))))) (Distrib.toAdd.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toDistrib.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivisionRing.toRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Field.toDivisionRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u1} R _inst_1 _inst_2))))))))))))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.map_aut LocalRing.ResidueField.mapAutₓ'. -/
/-- The group homomorphism from `ring_aut R` to `ring_aut k` where `k`
is the residue field of `R`. -/
@[simps]
@@ -483,6 +723,12 @@ variable (G : Type _) [Group G] [MulSemiringAction G R]
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
+/- warning: local_ring.residue_field.residue_smul -> LocalRing.ResidueField.residue_smul is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (G : Type.{u2}) [_inst_7 : Group.{u2} G] [_inst_8 : MulSemiringAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (g : G) (r : R), Eq.{succ u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) (SMul.smul.{u2, u1} G R (SMulZeroClass.toHasSmul.{u2, u1} G R (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G R (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) _inst_8)))) g r)) (SMul.smul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (SMulZeroClass.toHasSmul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddZeroClass.toHasZero.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))))) (DistribSMul.toSmulZeroClass.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoid.toAddZeroClass.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocSemiring.toAddCommMonoidWithOne.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u2, u1} G (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_7)) (Ring.toSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)) (LocalRing.ResidueField.mulSemiringAction.{u1, u2} R _inst_1 _inst_2 G _inst_7 _inst_8))))) g (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (fun (_x : RingHom.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) => R -> (LocalRing.ResidueField.{u1} R _inst_1 _inst_2)) (RingHom.hasCoeToFun.{u1, u1} R (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (Ring.toNonAssocRing.{u1} (LocalRing.ResidueField.{u1} R _inst_1 _inst_2) (LocalRing.ResidueField.ring.{u1} R _inst_1 _inst_2)))) (LocalRing.residue.{u1} R _inst_1 _inst_2) r))
+but is expected to have type
+ forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] [_inst_2 : LocalRing.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (G : Type.{u1}) [_inst_7 : Group.{u1} G] [_inst_8 : MulSemiringAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))] (g : G) (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) (HSMul.hSMul.{u1, u2, u2} G R R (instHSMul.{u1, u2} G R (SMulZeroClass.toSMul.{u1, u2} G R (CommMonoidWithZero.toZero.{u2} R (CommSemiring.toCommMonoidWithZero.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (DistribSMul.toSMulZeroClass.{u1, u2} G R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1))))) (DistribMulAction.toDistribSMul.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (Ring.toAddGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_1)))) (MulSemiringAction.toDistribMulAction.{u1, u2} G R (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_1)) _inst_8))))) g r)) (HSMul.hSMul.{u1, u2, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (instHSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (SMulZeroClass.toSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommMonoidWithZero.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (CommGroupWithZero.toCommMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Semifield.toCommGroupWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toSemifield.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (DistribSMul.toSMulZeroClass.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoid.toAddZeroClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (DistribMulAction.toDistribSMul.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (AddMonoidWithOne.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (AddGroupWithOne.toAddMonoidWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Ring.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (MulSemiringAction.toDistribMulAction.{u1, u2} G ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_7)) (Ring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (DivisionRing.toRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (Field.toDivisionRing.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) r) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))) (LocalRing.ResidueField.instMulSemiringActionResidueFieldToMonoidToDivInvMonoidToSemiringToDivisionSemiringToSemifieldField.{u2, u1} R _inst_1 _inst_2 G _inst_7 _inst_8)))))) g (FunLike.coe.{succ u2, succ u2, succ u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocalRing.ResidueField.{u2} R _inst_1 _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))) (NonUnitalRingHomClass.toMulHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) (RingHomClass.toNonUnitalRingHomClass.{u2, u2, u2} (RingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2)))))) R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))) (RingHom.instRingHomClassRingHom.{u2, u2} R (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (DivisionSemiring.toSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Semifield.toDivisionSemiring.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (Field.toSemifield.{u2} (LocalRing.ResidueField.{u2} R _inst_1 _inst_2) (LocalRing.ResidueField.field.{u2} R _inst_1 _inst_2))))))))) (LocalRing.residue.{u2} R _inst_1 _inst_2) r))
+Case conversion may be inaccurate. Consider using '#align local_ring.residue_field.residue_smul LocalRing.ResidueField.residue_smulₓ'. -/
@[simp]
theorem residue_smul (g : G) (r : R) : residue R (g • r) = g • residue R r :=
rfl
@@ -492,11 +738,18 @@ end MulSemiringAction
end ResidueField
+/- warning: local_ring.ker_eq_maximal_ideal -> LocalRing.ker_eq_maximalIdeal is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (fun (_x : RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) => R -> K) (RingHom.hasCoeToFun.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1)) (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))) (RingHom.ringHomClass.{u1, u2} R K (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))) (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K (Field.toDivisionRing.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
+but is expected to have type
+ forall {R : Type.{u1}} {K : Type.{u2}} [_inst_1 : CommRing.{u1} R] [_inst_2 : LocalRing.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))] [_inst_7 : Field.{u2} K] (φ : RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))), (Function.Surjective.{succ u1, succ u2} R K (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => K) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u2} K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} K (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7)))))))) φ)) -> (Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (RingHom.ker.{u1, u2, max u1 u2} R K (RingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))) (RingHom.instRingHomClassRingHom.{u1, u2} R K (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} K (DivisionSemiring.toSemiring.{u2} K (Semifield.toDivisionSemiring.{u2} K (Field.toSemifield.{u2} K _inst_7))))) φ) (LocalRing.maximalIdeal.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) _inst_2))
+Case conversion may be inaccurate. Consider using '#align local_ring.ker_eq_maximal_ideal LocalRing.ker_eq_maximalIdealₓ'. -/
theorem ker_eq_maximalIdeal [Field K] (φ : R →+* K) (hφ : Function.Surjective φ) :
φ.ker = maximalIdeal R :=
LocalRing.eq_maximalIdeal <| (RingHom.ker_isMaximal_of_surjective φ) hφ
#align local_ring.ker_eq_maximal_ideal LocalRing.ker_eq_maximalIdeal
+#print LocalRing.isLocalRingHom_residue /-
theorem isLocalRingHom_residue : IsLocalRingHom (LocalRing.residue R) :=
by
constructor
@@ -505,6 +758,7 @@ theorem isLocalRingHom_residue : IsLocalRingHom (LocalRing.residue R) :=
erw [ideal.quotient.eq_zero_iff_mem.mpr ((LocalRing.mem_maximalIdeal _).mpr h)] at ha
exact ha.ne_zero rfl
#align local_ring.is_local_ring_hom_residue LocalRing.isLocalRingHom_residue
+-/
end
@@ -524,12 +778,24 @@ instance (priority := 100) : LocalRing K :=
end Field
+/- warning: local_ring.maximal_ideal_eq_bot -> LocalRing.maximalIdeal_eq_bot is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : Field.{u1} R], Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (LocalRing.maximalIdeal.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)) (Field.localRing.{u1} R _inst_1)) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (Submodule.hasBot.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : Field.{u1} R], Eq.{succ u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (LocalRing.maximalIdeal.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)) (Field.instLocalRingToSemiringToDivisionSemiringToSemifield.{u1} R _inst_1)) (Bot.bot.{u1} (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))) (Submodule.instBotSubmodule.{u1, u1} R R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1)))))) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (Semifield.toCommSemiring.{u1} R (Field.toSemifield.{u1} R _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_botₓ'. -/
theorem LocalRing.maximalIdeal_eq_bot {R : Type _} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)
#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_bot
namespace RingEquiv
+/- warning: ring_equiv.local_ring -> RingEquiv.localRing is a dubious translation:
+lean 3 declaration is
+ forall {A : Type.{u1}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} A] [_inst_2 : LocalRing.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)] [_inst_3 : CommSemiring.{u2} B], (RingEquiv.{u1, u2} A B (Distrib.toHasMul.{u1} A (NonUnitalNonAssocSemiring.toDistrib.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (Distrib.toHasAdd.{u1} A (NonUnitalNonAssocSemiring.toDistrib.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (Distrib.toHasMul.{u2} B (NonUnitalNonAssocSemiring.toDistrib.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3))))) (Distrib.toHasAdd.{u2} B (NonUnitalNonAssocSemiring.toDistrib.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3)))))) -> (LocalRing.{u2} B (CommSemiring.toSemiring.{u2} B _inst_3))
+but is expected to have type
+ forall {A : Type.{u2}} {B : Type.{u1}} [_inst_1 : CommSemiring.{u2} A] [_inst_2 : LocalRing.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1)] [_inst_3 : CommSemiring.{u1} B], (RingEquiv.{u2, u1} A B (NonUnitalNonAssocSemiring.toMul.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3)))) (Distrib.toAdd.{u2} A (NonUnitalNonAssocSemiring.toDistrib.{u2} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} A (Semiring.toNonAssocSemiring.{u2} A (CommSemiring.toSemiring.{u2} A _inst_1))))) (Distrib.toAdd.{u1} B (NonUnitalNonAssocSemiring.toDistrib.{u1} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} B (Semiring.toNonAssocSemiring.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3)))))) -> (LocalRing.{u1} B (CommSemiring.toSemiring.{u1} B _inst_3))
+Case conversion may be inaccurate. Consider using '#align ring_equiv.local_ring RingEquiv.localRingₓ'. -/
@[reducible]
protected theorem localRing {A B : Type _} [CommSemiring A] [LocalRing A] [CommSemiring B]
(e : A ≃+* B) : LocalRing B :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -196,8 +196,8 @@ theorem jacobson_eq_maximalIdeal (I : Ideal R) (h : I ≠ ⊤) :
I.jacobson = LocalRing.maximalIdeal R :=
by
apply le_antisymm
- · exact infₛ_le ⟨LocalRing.le_maximalIdeal h, LocalRing.maximalIdeal.isMaximal R⟩
- · exact le_infₛ fun J (hJ : I ≤ J ∧ J.IsMaximal) => le_of_eq (LocalRing.eq_maximalIdeal hJ.2).symm
+ · exact sInf_le ⟨LocalRing.le_maximalIdeal h, LocalRing.maximalIdeal.isMaximal R⟩
+ · exact le_sInf fun J (hJ : I ≤ J ∧ J.IsMaximal) => le_of_eq (LocalRing.eq_maximalIdeal hJ.2).symm
#align local_ring.jacobson_eq_maximal_ideal LocalRing.jacobson_eq_maximalIdeal
end LocalRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce11c3c2a285bbe6937e26d9792fda4e51f3fe1a
@@ -4,13 +4,14 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
! This file was ported from Lean 3 source module ring_theory.ideal.local_ring
-! leanprover-community/mathlib commit b86c528d08a52a1fdb50d999232408e1c7e85d7d
+! leanprover-community/mathlib commit ec1c7d810034d4202b0dd239112d1792be9f6fdc
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Algebra.Algebra.Basic
import Mathbin.RingTheory.Ideal.Operations
import Mathbin.RingTheory.JacobsonIdeal
+import Mathbin.Logic.Equiv.TransferInstance
/-!
@@ -527,3 +528,14 @@ theorem LocalRing.maximalIdeal_eq_bot {R : Type _} [Field R] : LocalRing.maximal
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)
#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_bot
+namespace RingEquiv
+
+@[reducible]
+protected theorem localRing {A B : Type _} [CommSemiring A] [LocalRing A] [CommSemiring B]
+ (e : A ≃+* B) : LocalRing B :=
+ haveI := e.symm.to_equiv.nontrivial
+ LocalRing.of_surjective (e : A →+* B) e.surjective
+#align ring_equiv.local_ring RingEquiv.localRing
+
+end RingEquiv
+
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -236,7 +236,7 @@ instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g]
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S)
where map_nonunit a ha := by
- convert (f.symm : S →+* R).isUnit_map ha
+ convert(f.symm : S →+* R).isUnit_map ha
exact (RingEquiv.symm_apply_apply f a).symm
#align is_local_ring_hom_equiv isLocalRingHom_equiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Splits Algebra.Algebra.Defs
off Algebra.Algebra.Basic
. Most imports only need the Defs file, which has significantly smaller imports. The remaining Algebra.Algebra.Basic
is now a grab-bag of unrelated results, and should probably be split further or rehomed.
This is mostly motivated by the wasted effort during minimization upon encountering Algebra.Algebra.Basic.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>
@@ -3,7 +3,7 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
-/
-import Mathlib.Algebra.Algebra.Basic
+import Mathlib.Algebra.Algebra.Defs
import Mathlib.RingTheory.Ideal.Operations
import Mathlib.RingTheory.JacobsonIdeal
import Mathlib.Logic.Equiv.TransferInstance
mul
-div
cancellation lemmas (#11530)
Lemma names around cancellation of multiplication and division are a mess.
This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero
lemma name, the Group
lemma, the AddGroup
lemma name).
| Statement | New name | Old name | |
@@ -161,13 +161,13 @@ namespace LocalRing
theorem of_isUnit_or_isUnit_one_sub_self [Nontrivial R] (h : ∀ a : R, IsUnit a ∨ IsUnit (1 - a)) :
LocalRing R :=
- ⟨fun {a b} hab => add_sub_cancel' a b ▸ hab.symm ▸ h a⟩
+ ⟨fun {a b} hab => add_sub_cancel_left a b ▸ hab.symm ▸ h a⟩
#align local_ring.of_is_unit_or_is_unit_one_sub_self LocalRing.of_isUnit_or_isUnit_one_sub_self
variable [LocalRing R]
theorem isUnit_or_isUnit_one_sub_self (a : R) : IsUnit a ∨ IsUnit (1 - a) :=
- isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel'_right a 1).symm ▸ isUnit_one
+ isUnit_or_isUnit_of_isUnit_add <| (add_sub_cancel a 1).symm ▸ isUnit_one
#align local_ring.is_unit_or_is_unit_one_sub_self LocalRing.isUnit_or_isUnit_one_sub_self
theorem isUnit_of_mem_nonunits_one_sub_self (a : R) (h : 1 - a ∈ nonunits R) : IsUnit a :=
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -517,7 +517,7 @@ namespace Field
variable (K) [Field K]
-open Classical
+open scoped Classical
-- see Note [lower instance priority]
instance (priority := 100) : LocalRing K :=
In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:
) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.
@@ -220,7 +220,7 @@ theorem isUnit_map_iff (f : R →+* S) [IsLocalRingHom f] (a) : IsUnit (f a) ↔
⟨IsLocalRingHom.map_nonunit a, f.isUnit_map⟩
#align is_unit_map_iff isUnit_map_iff
--- Porting note : as this can be proved by other `simp` lemmas, this is marked as high priority.
+-- Porting note: as this can be proved by other `simp` lemmas, this is marked as high priority.
@[simp (high)]
theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
f a ∈ nonunits S ↔ a ∈ nonunits R :=
@@ -350,7 +350,7 @@ def ResidueField :=
R ⧸ maximalIdeal R
#align local_ring.residue_field LocalRing.ResidueField
--- Porting note : failed at `deriving` instances automatically
+-- Porting note: failed at `deriving` instances automatically
instance ResidueFieldCommRing : CommRing (ResidueField R) :=
show CommRing (R ⧸ maximalIdeal R) from inferInstance
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -434,13 +434,13 @@ theorem map_residue (f : R →+* S) [IsLocalRingHom f] (r : R) :
#align local_ring.residue_field.map_residue LocalRing.ResidueField.map_residue
theorem map_id_apply (x : ResidueField R) : map (RingHom.id R) x = x :=
- FunLike.congr_fun map_id x
+ DFunLike.congr_fun map_id x
#align local_ring.residue_field.map_id_apply LocalRing.ResidueField.map_id_apply
@[simp]
theorem map_map (f : R →+* S) (g : S →+* T) (x : ResidueField R) [IsLocalRingHom f]
[IsLocalRingHom g] : map g (map f x) = map (g.comp f) x :=
- FunLike.congr_fun (map_comp f g).symm x
+ DFunLike.congr_fun (map_comp f g).symm x
#align local_ring.residue_field.map_map LocalRing.ResidueField.map_map
/-- A ring isomorphism defines an isomorphism of residue fields. -/
@@ -211,8 +211,8 @@ section
variable [Semiring R] [Semiring S] [Semiring T]
-instance isLocalRingHom_id (R : Type*) [Semiring R] : IsLocalRingHom (RingHom.id R)
- where map_nonunit _ := id
+instance isLocalRingHom_id (R : Type*) [Semiring R] : IsLocalRingHom (RingHom.id R) where
+ map_nonunit _ := id
#align is_local_ring_hom_id isLocalRingHom_id
@[simp]
@@ -228,8 +228,8 @@ theorem map_mem_nonunits_iff (f : R →+* S) [IsLocalRingHom f] (a) :
#align map_mem_nonunits_iff map_mem_nonunits_iff
instance isLocalRingHom_comp (g : S →+* T) (f : R →+* S) [IsLocalRingHom g] [IsLocalRingHom f] :
- IsLocalRingHom (g.comp f)
- where map_nonunit a := IsLocalRingHom.map_nonunit a ∘ IsLocalRingHom.map_nonunit (f a)
+ IsLocalRingHom (g.comp f) where
+ map_nonunit a := IsLocalRingHom.map_nonunit a ∘ IsLocalRingHom.map_nonunit (f a)
#align is_local_ring_hom_comp isLocalRingHom_comp
instance isLocalRingHom_equiv (f : R ≃+* S) : IsLocalRingHom (f : R →+* S) where
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -211,7 +211,7 @@ section
variable [Semiring R] [Semiring S] [Semiring T]
-instance isLocalRingHom_id (R : Type _) [Semiring R] : IsLocalRingHom (RingHom.id R)
+instance isLocalRingHom_id (R : Type*) [Semiring R] : IsLocalRingHom (RingHom.id R)
where map_nonunit _ := id
#align is_local_ring_hom_id isLocalRingHom_id
@@ -256,7 +256,7 @@ theorem isLocalRingHom_of_comp (f : R →+* S) (g : S →+* T) [IsLocalRingHom (
#align is_local_ring_hom_of_comp isLocalRingHom_of_comp
/-- If `f : R →+* S` is a local ring hom, then `R` is a local ring if `S` is. -/
-theorem RingHom.domain_localRing {R S : Type _} [CommSemiring R] [CommSemiring S] [H : LocalRing S]
+theorem RingHom.domain_localRing {R S : Type*} [CommSemiring R] [CommSemiring S] [H : LocalRing S]
(f : R →+* S) [IsLocalRingHom f] : LocalRing R := by
haveI : Nontrivial R := pullback_nonzero f f.map_zero f.map_one
apply LocalRing.of_nonunits_add
@@ -383,19 +383,19 @@ variable {R}
namespace ResidueField
/-- A local ring homomorphism into a field can be descended onto the residue field. -/
-def lift {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S) [IsLocalRingHom f] :
+def lift {R S : Type*} [CommRing R] [LocalRing R] [Field S] (f : R →+* S) [IsLocalRingHom f] :
LocalRing.ResidueField R →+* S :=
Ideal.Quotient.lift _ f fun a ha =>
by_contradiction fun h => ha (isUnit_of_map_unit f a (isUnit_iff_ne_zero.mpr h))
#align local_ring.residue_field.lift LocalRing.ResidueField.lift
-theorem lift_comp_residue {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
+theorem lift_comp_residue {R S : Type*} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] : (lift f).comp (residue R) = f :=
RingHom.ext fun _ => rfl
#align local_ring.residue_field.lift_comp_residue LocalRing.ResidueField.lift_comp_residue
@[simp]
-theorem lift_residue_apply {R S : Type _} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
+theorem lift_residue_apply {R S : Type*} [CommRing R] [LocalRing R] [Field S] (f : R →+* S)
[IsLocalRingHom f] (x) : lift f (residue R x) = f x :=
rfl
#align local_ring.residue_field.lift_residue_apply LocalRing.ResidueField.lift_residue_apply
@@ -481,7 +481,7 @@ def mapAut : RingAut R →* RingAut (LocalRing.ResidueField R) where
section MulSemiringAction
-variable (G : Type _) [Group G] [MulSemiringAction G R]
+variable (G : Type*) [Group G] [MulSemiringAction G R]
/-- If `G` acts on `R` as a `MulSemiringAction`, then it also acts on `LocalRing.ResidueField R`. -/
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
@@ -527,14 +527,14 @@ instance (priority := 100) : LocalRing K :=
end Field
-theorem LocalRing.maximalIdeal_eq_bot {R : Type _} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
+theorem LocalRing.maximalIdeal_eq_bot {R : Type*} [Field R] : LocalRing.maximalIdeal R = ⊥ :=
LocalRing.isField_iff_maximalIdeal_eq.mp (Field.toIsField R)
#align local_ring.maximal_ideal_eq_bot LocalRing.maximalIdeal_eq_bot
namespace RingEquiv
@[reducible]
-protected theorem localRing {A B : Type _} [CommSemiring A] [LocalRing A] [CommSemiring B]
+protected theorem localRing {A B : Type*} [CommSemiring A] [LocalRing A] [CommSemiring B]
(e : A ≃+* B) : LocalRing B :=
haveI := e.symm.toEquiv.nontrivial
LocalRing.of_surjective (e : A →+* B) e.surjective
@@ -2,11 +2,6 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes, Mario Carneiro
-
-! This file was ported from Lean 3 source module ring_theory.ideal.local_ring
-! leanprover-community/mathlib commit ec1c7d810034d4202b0dd239112d1792be9f6fdc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Algebra.Basic
import Mathlib.RingTheory.Ideal.Operations
@@ -14,6 +9,8 @@ import Mathlib.RingTheory.JacobsonIdeal
import Mathlib.Logic.Equiv.TransferInstance
import Mathlib.Tactic.TFAE
+#align_import ring_theory.ideal.local_ring from "leanprover-community/mathlib"@"ec1c7d810034d4202b0dd239112d1792be9f6fdc"
+
/-!
# Local rings
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with ·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -300,22 +300,22 @@ theorem local_hom_TFAE (f : R →+* S) :
(maximalIdeal R).map f ≤ maximalIdeal S, maximalIdeal R ≤ (maximalIdeal S).comap f,
(maximalIdeal S).comap f = maximalIdeal R] := by
tfae_have 1 → 2
- . rintro _ _ ⟨a, ha, rfl⟩
+ · rintro _ _ ⟨a, ha, rfl⟩
exact map_nonunit f a ha
tfae_have 2 → 4
- . exact Set.image_subset_iff.1
+ · exact Set.image_subset_iff.1
tfae_have 3 ↔ 4
- . exact Ideal.map_le_iff_le_comap
+ · exact Ideal.map_le_iff_le_comap
tfae_have 4 → 1
- . intro h
+ · intro h
constructor
exact fun x => not_imp_not.1 (@h x)
tfae_have 1 → 5
- . intro
+ · intro
ext
exact not_iff_not.2 (isUnit_map_iff f _)
tfae_have 5 → 4
- . exact fun h => le_of_eq h.symm
+ · exact fun h => le_of_eq h.symm
tfae_finish
#align local_ring.local_hom_tfae LocalRing.local_hom_TFAE
@@ -410,7 +410,7 @@ def map (f : R →+* S) [IsLocalRingHom f] : ResidueField R →+* ResidueField S
exact map_nonunit f a ha
#align local_ring.residue_field.map LocalRing.ResidueField.map
-/-- Applying `residue_field.map` to the identity ring homomorphism gives the identity
+/-- Applying `LocalRing.ResidueField.map` to the identity ring homomorphism gives the identity
ring homomorphism. -/
@[simp]
theorem map_id :
@@ -418,7 +418,8 @@ theorem map_id :
Ideal.Quotient.ringHom_ext <| RingHom.ext fun _ => rfl
#align local_ring.residue_field.map_id LocalRing.ResidueField.map_id
-/-- The composite of two `residue_field.map`s is the `residue_field.map` of the composite. -/
+/-- The composite of two `LocalRing.ResidueField.map`s is the `LocalRing.ResidueField.map` of the
+composite. -/
theorem map_comp (f : T →+* R) (g : R →+* S) [IsLocalRingHom f] [IsLocalRingHom g] :
LocalRing.ResidueField.map (g.comp f) =
(LocalRing.ResidueField.map g).comp (LocalRing.ResidueField.map f) :=
@@ -485,7 +486,7 @@ section MulSemiringAction
variable (G : Type _) [Group G] [MulSemiringAction G R]
-/-- If `G` acts on `R` as a `MulSemiringAction`, then it also acts on `residue_field R`. -/
+/-- If `G` acts on `R` as a `MulSemiringAction`, then it also acts on `LocalRing.ResidueField R`. -/
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
fix-comments.py
on all files.@@ -22,15 +22,15 @@ Define local rings as commutative rings having a unique maximal ideal.
## Main definitions
-* `local_ring`: A predicate on commutative semirings, stating that for any pair of elements that
+* `LocalRing`: A predicate on commutative semirings, stating that for any pair of elements that
adds up to `1`, one of them is a unit. This is shown to be equivalent to the condition that there
exists a unique maximal ideal.
-* `local_ring.maximal_ideal`: The unique maximal ideal for a local rings. Its carrier set is the
+* `LocalRing.maximalIdeal`: The unique maximal ideal for a local rings. Its carrier set is the
set of non units.
-* `is_local_ring_hom`: A predicate on semiring homomorphisms, requiring that it maps nonunits
+* `IsLocalRingHom`: A predicate on semiring homomorphisms, requiring that it maps nonunits
to nonunits. For local rings, this means that the image of the unique maximal ideal is again
contained in the unique maximal ideal.
-* `local_ring.residue_field`: The quotient of a local ring by its maximal ideal.
+* `LocalRing.ResidueField`: The quotient of a local ring by its maximal ideal.
-/
@@ -40,7 +40,7 @@ universe u v w u'
variable {R : Type u} {S : Type v} {T : Type w} {K : Type u'}
/-- A semiring is local if it is nontrivial and `a` or `b` is a unit whenever `a + b = 1`.
-Note that `local_ring` is a predicate. -/
+Note that `LocalRing` is a predicate. -/
class LocalRing (R : Type u) [Semiring R] extends Nontrivial R : Prop where
of_is_unit_or_is_unit_of_add_one ::
/-- in a local ring `R`, if `a + b = 1`, then either `a` is a unit or `b` is a unit. In another
@@ -203,7 +203,7 @@ end LocalRing
end CommRing
/-- A local ring homomorphism is a homomorphism `f` between local rings such that `a` in the domain
- is a unit if `f a` is a unit for any `a`. See `local_ring.local_hom_tfae` for other equivalent
+ is a unit if `f a` is a unit for any `a`. See `LocalRing.local_hom_TFAE` for other equivalent
definitions. -/
class IsLocalRingHom [Semiring R] [Semiring S] (f : R →+* S) : Prop where
/-- A local ring homomorphism `f : R ⟶ S` will send nonunits of `R` to nonunits of `S`. -/
@@ -472,7 +472,7 @@ theorem mapEquiv_refl : mapEquiv (RingEquiv.refl R) = RingEquiv.refl _ :=
RingEquiv.toRingHom_injective map_id
#align local_ring.residue_field.map_equiv_refl LocalRing.ResidueField.mapEquiv_refl
-/-- The group homomorphism from `ring_aut R` to `ring_aut k` where `k`
+/-- The group homomorphism from `RingAut R` to `RingAut k` where `k`
is the residue field of `R`. -/
@[simps]
def mapAut : RingAut R →* RingAut (LocalRing.ResidueField R) where
@@ -485,7 +485,7 @@ section MulSemiringAction
variable (G : Type _) [Group G] [MulSemiringAction G R]
-/-- If `G` acts on `R` as a `mul_semiring_action`, then it also acts on `residue_field R`. -/
+/-- If `G` acts on `R` as a `MulSemiringAction`, then it also acts on `residue_field R`. -/
instance : MulSemiringAction G (LocalRing.ResidueField R) :=
MulSemiringAction.compHom _ <| mapAut.comp (MulSemiringAction.toRingAut G R)
The unported dependencies are