ring_theory.localization.localization_localization
⟷
Mathlib.RingTheory.Localization.LocalizationLocalization
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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
@@ -93,7 +93,7 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
-- y = z / t
rcases IsLocalization.surj M (s : S) with ⟨⟨z', t'⟩, eq₃⟩
-- s = z' / t'
- dsimp only at eq₁ eq₂ eq₃
+ dsimp only at eq₁ eq₂ eq₃
use z * t'; use z' * t
-- x = y / s = (z * t') / (z' * t)
· rw [mem_localization_localization_submodule]
@@ -114,7 +114,7 @@ theorem localization_localization_exists_of_eq [IsLocalization N T] (x y : R) :
constructor
· rintro ⟨z, eq₁⟩
rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
- dsimp only at eq₂
+ dsimp only at eq₂
obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp _
swap
· rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ ↑z, eq₁, mul_comm _ ↑z]
@@ -122,9 +122,9 @@ theorem localization_localization_exists_of_eq [IsLocalization N T] (x y : R) :
· rw [mem_localization_localization_submodule]
refine' ⟨z, c * s, _⟩
rw [map_mul, ← eq₂, Submonoid.coe_mul, map_mul, mul_left_comm]
- · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
+ · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
· rintro ⟨⟨c, hc⟩, eq₁ : c * x = c * y⟩
- rw [mem_localization_localization_submodule] at hc
+ rw [mem_localization_localization_submodule] at hc
rcases hc with ⟨z₁, z, eq₂⟩
use z₁
refine' (IsLocalization.map_units S z).mul_right_inj.mp _
@@ -253,13 +253,13 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
by
have h₁ := (IsLocalization.map_units T ⟨_, h s₁.prop⟩).mul_left_inj
have h₂ := (IsLocalization.map_units T ⟨_, h s₂.prop⟩).mul_left_inj
- simp only [IsScalarTower.algebraMap_apply R S T, Subtype.coe_mk] at h₁ h₂
+ simp only [IsScalarTower.algebraMap_apply R S T, Subtype.coe_mk] at h₁ h₂
simp only [IsScalarTower.algebraMap_apply R S T, map_mul, ← e₁, ← e₂, ← mul_assoc,
mul_right_comm _ (algebraMap R S s₂),
mul_right_comm _ (algebraMap S T (algebraMap R S s₂)),
(IsLocalization.map_units S s₁).mul_left_inj,
- (IsLocalization.map_units S s₂).mul_left_inj] at this
- rw [h₂, h₁] at this
+ (IsLocalization.map_units S s₂).mul_left_inj] at this
+ rw [h₂, h₁] at this
simpa only [mul_comm] using this
simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
constructor
@@ -276,7 +276,7 @@ theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization
{ map_units := fun y => by
obtain ⟨m, hm⟩ := h' y
have := IsLocalization.map_units S ⟨_, hm⟩
- erw [map_mul] at this
+ erw [map_mul] at this
exact (is_unit.mul_iff.mp this).2
surj := fun z => by obtain ⟨⟨y, s⟩, e⟩ := IsLocalization.surj M z; exact ⟨⟨y, _, h s.prop⟩, e⟩
eq_iff_exists := fun x₁ x₂ => by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -105,8 +105,7 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
-/
-#print IsLocalization.localization_localization_eq_iff_exists /-
-theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
+theorem localization_localization_exists_of_eq [IsLocalization N T] (x y : R) :
algebraMap R T x = algebraMap R T y ↔
∃ c : localizationLocalizationSubmodule M N, ↑c * x = ↑c * y :=
by
@@ -131,8 +130,7 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
refine' (IsLocalization.map_units S z).mul_right_inj.mp _
rw [← mul_assoc, mul_comm _ ↑z₁, ← eq₂, ← map_mul, eq₁, map_mul, eq₂, ← mul_assoc,
mul_comm _ ↑z₁]
-#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_exists
--/
+#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_exists_of_eqₓ
#print IsLocalization.localization_localization_isLocalization /-
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
@@ -142,7 +140,7 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
IsLocalization (localizationLocalizationSubmodule M N) T :=
{ map_units := localization_localization_map_units M N T
surj := localization_localization_surj M N T
- eq_iff_exists := localization_localization_eq_iff_exists M N T }
+ eq_iff_exists := localization_localization_exists_of_eq M N T }
#align is_localization.localization_localization_is_localization IsLocalization.localization_localization_isLocalization
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Mario Carneiro, Johan Commelin, Amelia Livingston, Anne Baanen
-/
-import Mathbin.RingTheory.Localization.AtPrime
-import Mathbin.RingTheory.Localization.Basic
-import Mathbin.RingTheory.Localization.FractionRing
+import RingTheory.Localization.AtPrime
+import RingTheory.Localization.Basic
+import RingTheory.Localization.FractionRing
#align_import ring_theory.localization.localization_localization from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Mario Carneiro, Johan Commelin, Amelia Livingston, Anne Baanen
-
-! This file was ported from Lean 3 source module ring_theory.localization.localization_localization
-! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.RingTheory.Localization.AtPrime
import Mathbin.RingTheory.Localization.Basic
import Mathbin.RingTheory.Localization.FractionRing
+#align_import ring_theory.localization.localization_localization from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
+
/-!
# Localizations of localizations
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -61,6 +61,7 @@ def localizationLocalizationSubmodule : Submonoid R :=
variable {M N}
+#print IsLocalization.mem_localizationLocalizationSubmodule /-
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
x ∈ localizationLocalizationSubmodule M N ↔
@@ -71,9 +72,11 @@ theorem mem_localizationLocalizationSubmodule {x : R} :
· rintro ⟨y, hy, _, ⟨z, hz, rfl⟩, e⟩; exact ⟨⟨y, hy⟩, ⟨z, hz⟩, e.symm⟩
· rintro ⟨y, z, e⟩; exact ⟨y, y.prop, _, ⟨z, z.prop, rfl⟩, e.symm⟩
#align is_localization.mem_localization_localization_submodule IsLocalization.mem_localizationLocalizationSubmodule
+-/
variable (M N) [IsLocalization M S]
+#print IsLocalization.localization_localization_map_units /-
theorem localization_localization_map_units [IsLocalization N T]
(y : localizationLocalizationSubmodule M N) : IsUnit (algebraMap R T y) :=
by
@@ -81,7 +84,9 @@ theorem localization_localization_map_units [IsLocalization N T]
rw [IsScalarTower.algebraMap_apply R S T, Eq, RingHom.map_mul, IsUnit.mul_iff]
exact ⟨IsLocalization.map_units T y', (IsLocalization.map_units _ z).map (algebraMap S T)⟩
#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_units
+-/
+#print IsLocalization.localization_localization_surj /-
theorem localization_localization_surj [IsLocalization N T] (x : T) :
∃ y : R × localizationLocalizationSubmodule M N, x * algebraMap R T y.2 = algebraMap R T y.1 :=
by
@@ -101,7 +106,9 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
← eq₁]
ring
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
+-/
+#print IsLocalization.localization_localization_eq_iff_exists /-
theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
algebraMap R T x = algebraMap R T y ↔
∃ c : localizationLocalizationSubmodule M N, ↑c * x = ↑c * y :=
@@ -128,7 +135,9 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
rw [← mul_assoc, mul_comm _ ↑z₁, ← eq₂, ← map_mul, eq₁, map_mul, eq₂, ← mul_assoc,
mul_comm _ ↑z₁]
#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_exists
+-/
+#print IsLocalization.localization_localization_isLocalization /-
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
`N ⁻¹ S = T = (f⁻¹ (N • f(M))) ⁻¹ R`. I.e., the localization of a localization is a localization.
-/
@@ -138,9 +147,9 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
surj := localization_localization_surj M N T
eq_iff_exists := localization_localization_eq_iff_exists M N T }
#align is_localization.localization_localization_is_localization IsLocalization.localization_localization_isLocalization
+-/
-include M
-
+#print IsLocalization.localization_localization_isLocalization_of_has_all_units /-
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, if
`N` contains all the units of `S`, then `N ⁻¹ S = T = (f⁻¹ N) ⁻¹ R`. I.e., the localization of a
localization is a localization.
@@ -154,7 +163,9 @@ theorem localization_localization_isLocalization_of_has_all_units [IsLocalizatio
rintro _ ⟨x, hx, rfl⟩
exact H _ (IsLocalization.map_units _ ⟨x, hx⟩)
#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_units
+-/
+#print IsLocalization.isLocalization_isLocalization_atPrime_isLocalization /-
/--
Given a submodule `M ⊆ R` and a prime ideal `p` of `S = M⁻¹R`, with `f : R →+* S` the localization
map, then `T = Sₚ` is the localization of `R` at `f⁻¹(p)`.
@@ -166,6 +177,7 @@ theorem isLocalization_isLocalization_atPrime_isLocalization (p : Ideal S) [Hp :
intro x hx hx'
exact (Hp.1 : ¬_) (p.eq_top_of_is_unit_mem hx' hx)
#align is_localization.is_localization_is_localization_at_prime_is_localization IsLocalization.isLocalization_isLocalization_atPrime_isLocalization
+-/
instance (p : Ideal (Localization M)) [p.IsPrime] : Algebra R (Localization.AtPrime p) :=
Localization.algebra
@@ -174,11 +186,14 @@ instance (p : Ideal (Localization M)) [p.IsPrime] :
IsScalarTower R (Localization M) (Localization.AtPrime p) :=
IsScalarTower.of_algebraMap_eq' rfl
+#print IsLocalization.localization_localization_atPrime_is_localization /-
instance localization_localization_atPrime_is_localization (p : Ideal (Localization M))
[p.IsPrime] : IsLocalization.AtPrime (Localization.AtPrime p) (p.comap (algebraMap R _)) :=
isLocalization_isLocalization_atPrime_isLocalization M _ _
#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localization
+-/
+#print IsLocalization.localizationLocalizationAtPrimeIsoLocalization /-
/-- Given a submodule `M ⊆ R` and a prime ideal `p` of `M⁻¹R`, with `f : R →+* S` the localization
map, then `(M⁻¹R)ₚ` is isomorphic (as an `R`-algebra) to the localization of `R` at `f⁻¹(p)`.
-/
@@ -187,18 +202,22 @@ noncomputable def localizationLocalizationAtPrimeIsoLocalization (p : Ideal (Loc
Localization.AtPrime (p.comap (algebraMap R (Localization M))) ≃ₐ[R] Localization.AtPrime p :=
IsLocalization.algEquiv (p.comap (algebraMap R (Localization M))).primeCompl _ _
#align is_localization.localization_localization_at_prime_iso_localization IsLocalization.localizationLocalizationAtPrimeIsoLocalization
+-/
end
variable (S)
+#print IsLocalization.localizationAlgebraOfSubmonoidLe /-
/-- Given submonoids `M ≤ N` of `R`, this is the canonical algebra structure
of `M⁻¹S` acting on `N⁻¹S`. -/
noncomputable def localizationAlgebraOfSubmonoidLe (M N : Submonoid R) (h : M ≤ N)
[IsLocalization M S] [IsLocalization N T] : Algebra S T :=
(IsLocalization.lift fun y => (map_units T ⟨↑y, h y.Prop⟩ : _) : S →+* T).toAlgebra
#align is_localization.localization_algebra_of_submonoid_le IsLocalization.localizationAlgebraOfSubmonoidLe
+-/
+#print IsLocalization.localization_isScalarTower_of_submonoid_le /-
/-- If `M ≤ N` are submonoids of `R`, then the natural map `M⁻¹S →+* N⁻¹S` commutes with the
localization maps -/
theorem localization_isScalarTower_of_submonoid_le (M N : Submonoid R) (h : M ≤ N)
@@ -207,12 +226,14 @@ theorem localization_isScalarTower_of_submonoid_le (M N : Submonoid R) (h : M
letI := localization_algebra_of_submonoid_le S T M N h
IsScalarTower.of_algebraMap_eq' (IsLocalization.lift_comp _).symm
#align is_localization.localization_is_scalar_tower_of_submonoid_le IsLocalization.localization_isScalarTower_of_submonoid_le
+-/
noncomputable instance (x : Ideal R) [H : x.IsPrime] [IsDomain R] :
Algebra (Localization.AtPrime x) (Localization (nonZeroDivisors R)) :=
localizationAlgebraOfSubmonoidLe _ _ x.primeCompl (nonZeroDivisors R)
(by intro a ha; rw [mem_nonZeroDivisors_iff_ne_zero]; exact fun h => ha (h.symm ▸ x.zero_mem))
+#print IsLocalization.isLocalization_of_submonoid_le /-
/-- If `M ≤ N` are submonoids of `R`, then `N⁻¹S` is also the localization of `M⁻¹S` at `N`. -/
theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLocalization M S]
[IsLocalization N T] [Algebra S T] [IsScalarTower R S T] :
@@ -250,7 +271,9 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
· rintro ⟨a, e⟩; exact ⟨a, 1, by convert e using 1 <;> simp <;> ring⟩
· rintro ⟨a, b, e⟩; exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
+-/
+#print IsLocalization.isLocalization_of_is_exists_mul_mem /-
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
localization at `N` is equal to the localizaton of `M`. -/
theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization M S] (h : M ≤ N)
@@ -269,6 +292,7 @@ theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization
refine' ⟨⟨_, hm⟩, _⟩
simp [h, mul_assoc] }
#align is_localization.is_localization_of_is_exists_mul_mem IsLocalization.isLocalization_of_is_exists_mul_mem
+-/
end LocalizationLocalization
@@ -280,6 +304,7 @@ open IsLocalization
variable (M)
+#print IsFractionRing.isFractionRing_of_isLocalization /-
theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T] [Algebra R S]
[Algebra R T] [Algebra S T] [IsScalarTower R S T] [IsLocalization M S] [IsFractionRing R T]
(hM : M ≤ nonZeroDivisors R) : IsFractionRing S T :=
@@ -300,7 +325,9 @@ theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T
MulZeroClass.zero_mul]
· exact hM
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
+-/
+#print IsFractionRing.isFractionRing_of_isDomain_of_isLocalization /-
theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type _) [CommRing S]
[CommRing T] [Algebra R S] [Algebra R T] [Algebra S T] [IsScalarTower R S T]
[IsLocalization M S] [IsFractionRing R T] : IsFractionRing S T :=
@@ -315,6 +342,7 @@ theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type _)
rw [← (algebraMap R S).map_one, ← @mk'_one R _ M, @comm _ Eq, mk'_eq_zero_iff]
exact ⟨⟨x, hx⟩, by simp [hx']⟩
#align is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization IsFractionRing.isFractionRing_of_isDomain_of_isLocalization
+-/
end IsFractionRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -64,7 +64,7 @@ variable {M N}
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
x ∈ localizationLocalizationSubmodule M N ↔
- ∃ (y : N)(z : M), algebraMap R S x = y * algebraMap R S z :=
+ ∃ (y : N) (z : M), algebraMap R S x = y * algebraMap R S z :=
by
rw [localization_localization_submodule, Submonoid.mem_comap, Submonoid.mem_sup]
constructor
@@ -91,7 +91,7 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
-- y = z / t
rcases IsLocalization.surj M (s : S) with ⟨⟨z', t'⟩, eq₃⟩
-- s = z' / t'
- dsimp only at eq₁ eq₂ eq₃
+ dsimp only at eq₁ eq₂ eq₃
use z * t'; use z' * t
-- x = y / s = (z * t') / (z' * t)
· rw [mem_localization_localization_submodule]
@@ -111,7 +111,7 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
constructor
· rintro ⟨z, eq₁⟩
rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
- dsimp only at eq₂
+ dsimp only at eq₂
obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp _
swap
· rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ ↑z, eq₁, mul_comm _ ↑z]
@@ -119,9 +119,9 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
· rw [mem_localization_localization_submodule]
refine' ⟨z, c * s, _⟩
rw [map_mul, ← eq₂, Submonoid.coe_mul, map_mul, mul_left_comm]
- · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
+ · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
· rintro ⟨⟨c, hc⟩, eq₁ : c * x = c * y⟩
- rw [mem_localization_localization_submodule] at hc
+ rw [mem_localization_localization_submodule] at hc
rcases hc with ⟨z₁, z, eq₂⟩
use z₁
refine' (IsLocalization.map_units S z).mul_right_inj.mp _
@@ -230,20 +230,20 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
obtain ⟨⟨y₁, s₁⟩, e₁⟩ := IsLocalization.surj M x₁
obtain ⟨⟨y₂, s₂⟩, e₂⟩ := IsLocalization.surj M x₂
refine' Iff.trans _ (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).symm
- dsimp only at e₁ e₂⊢
+ dsimp only at e₁ e₂ ⊢
suffices
algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) ↔
∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁))
by
have h₁ := (IsLocalization.map_units T ⟨_, h s₁.prop⟩).mul_left_inj
have h₂ := (IsLocalization.map_units T ⟨_, h s₂.prop⟩).mul_left_inj
- simp only [IsScalarTower.algebraMap_apply R S T, Subtype.coe_mk] at h₁ h₂
+ simp only [IsScalarTower.algebraMap_apply R S T, Subtype.coe_mk] at h₁ h₂
simp only [IsScalarTower.algebraMap_apply R S T, map_mul, ← e₁, ← e₂, ← mul_assoc,
mul_right_comm _ (algebraMap R S s₂),
mul_right_comm _ (algebraMap S T (algebraMap R S s₂)),
(IsLocalization.map_units S s₁).mul_left_inj,
- (IsLocalization.map_units S s₂).mul_left_inj] at this
- rw [h₂, h₁] at this
+ (IsLocalization.map_units S s₂).mul_left_inj] at this
+ rw [h₂, h₁] at this
simpa only [mul_comm] using this
simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
constructor
@@ -258,7 +258,7 @@ theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization
{ map_units := fun y => by
obtain ⟨m, hm⟩ := h' y
have := IsLocalization.map_units S ⟨_, hm⟩
- erw [map_mul] at this
+ erw [map_mul] at this
exact (is_unit.mul_iff.mp this).2
surj := fun z => by obtain ⟨⟨y, s⟩, e⟩ := IsLocalization.surj M z; exact ⟨⟨y, _, h s.prop⟩, e⟩
eq_iff_exists := fun x₁ x₂ => by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -34,7 +34,7 @@ variable [Algebra R S] {P : Type _} [CommRing P]
open Function
-open BigOperators
+open scoped BigOperators
namespace IsLocalization
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -61,9 +61,6 @@ def localizationLocalizationSubmodule : Submonoid R :=
variable {M N}
-/- warning: is_localization.mem_localization_localization_submodule -> IsLocalization.mem_localizationLocalizationSubmodule is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.mem_localization_localization_submodule IsLocalization.mem_localizationLocalizationSubmoduleₓ'. -/
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
x ∈ localizationLocalizationSubmodule M N ↔
@@ -77,9 +74,6 @@ theorem mem_localizationLocalizationSubmodule {x : R} :
variable (M N) [IsLocalization M S]
-/- warning: is_localization.localization_localization_map_units -> IsLocalization.localization_localization_map_units is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_unitsₓ'. -/
theorem localization_localization_map_units [IsLocalization N T]
(y : localizationLocalizationSubmodule M N) : IsUnit (algebraMap R T y) :=
by
@@ -88,9 +82,6 @@ theorem localization_localization_map_units [IsLocalization N T]
exact ⟨IsLocalization.map_units T y', (IsLocalization.map_units _ z).map (algebraMap S T)⟩
#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_units
-/- warning: is_localization.localization_localization_surj -> IsLocalization.localization_localization_surj is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_surj IsLocalization.localization_localization_surjₓ'. -/
theorem localization_localization_surj [IsLocalization N T] (x : T) :
∃ y : R × localizationLocalizationSubmodule M N, x * algebraMap R T y.2 = algebraMap R T y.1 :=
by
@@ -111,9 +102,6 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
ring
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
-/- warning: is_localization.localization_localization_eq_iff_exists -> IsLocalization.localization_localization_eq_iff_exists is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_existsₓ'. -/
theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
algebraMap R T x = algebraMap R T y ↔
∃ c : localizationLocalizationSubmodule M N, ↑c * x = ↑c * y :=
@@ -141,12 +129,6 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
mul_comm _ ↑z₁]
#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_exists
-/- warning: is_localization.localization_localization_is_localization -> IsLocalization.localization_localization_isLocalization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7], IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7], IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_is_localization IsLocalization.localization_localization_isLocalizationₓ'. -/
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
`N ⁻¹ S = T = (f⁻¹ (N • f(M))) ⁻¹ R`. I.e., the localization of a localization is a localization.
-/
@@ -159,9 +141,6 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
include M
-/- warning: is_localization.localization_localization_is_localization_of_has_all_units -> IsLocalization.localization_localization_isLocalization_of_has_all_units is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_unitsₓ'. -/
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, if
`N` contains all the units of `S`, then `N ⁻¹ S = T = (f⁻¹ N) ⁻¹ R`. I.e., the localization of a
localization is a localization.
@@ -176,9 +155,6 @@ theorem localization_localization_isLocalization_of_has_all_units [IsLocalizatio
exact H _ (IsLocalization.map_units _ ⟨x, hx⟩)
#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_units
-/- warning: is_localization.is_localization_is_localization_at_prime_is_localization -> IsLocalization.isLocalization_isLocalization_atPrime_isLocalization is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_is_localization_at_prime_is_localization IsLocalization.isLocalization_isLocalization_atPrime_isLocalizationₓ'. -/
/--
Given a submodule `M ⊆ R` and a prime ideal `p` of `S = M⁻¹R`, with `f : R →+* S` the localization
map, then `T = Sₚ` is the localization of `R` at `f⁻¹(p)`.
@@ -198,17 +174,11 @@ instance (p : Ideal (Localization M)) [p.IsPrime] :
IsScalarTower R (Localization M) (Localization.AtPrime p) :=
IsScalarTower.of_algebraMap_eq' rfl
-/- warning: is_localization.localization_localization_at_prime_is_localization -> IsLocalization.localization_localization_atPrime_is_localization is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localizationₓ'. -/
instance localization_localization_atPrime_is_localization (p : Ideal (Localization M))
[p.IsPrime] : IsLocalization.AtPrime (Localization.AtPrime p) (p.comap (algebraMap R _)) :=
isLocalization_isLocalization_atPrime_isLocalization M _ _
#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localization
-/- warning: is_localization.localization_localization_at_prime_iso_localization -> IsLocalization.localizationLocalizationAtPrimeIsoLocalization is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_iso_localization IsLocalization.localizationLocalizationAtPrimeIsoLocalizationₓ'. -/
/-- Given a submodule `M ⊆ R` and a prime ideal `p` of `M⁻¹R`, with `f : R →+* S` the localization
map, then `(M⁻¹R)ₚ` is isomorphic (as an `R`-algebra) to the localization of `R` at `f⁻¹(p)`.
-/
@@ -222,12 +192,6 @@ end
variable (S)
-/- warning: is_localization.localization_algebra_of_submonoid_le -> IsLocalization.localizationAlgebraOfSubmonoidLe is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_algebra_of_submonoid_le IsLocalization.localizationAlgebraOfSubmonoidLeₓ'. -/
/-- Given submonoids `M ≤ N` of `R`, this is the canonical algebra structure
of `M⁻¹S` acting on `N⁻¹S`. -/
noncomputable def localizationAlgebraOfSubmonoidLe (M N : Submonoid R) (h : M ≤ N)
@@ -235,12 +199,6 @@ noncomputable def localizationAlgebraOfSubmonoidLe (M N : Submonoid R) (h : M
(IsLocalization.lift fun y => (map_units T ⟨↑y, h y.Prop⟩ : _) : S →+* T).toAlgebra
#align is_localization.localization_algebra_of_submonoid_le IsLocalization.localizationAlgebraOfSubmonoidLe
-/- warning: is_localization.localization_is_scalar_tower_of_submonoid_le -> IsLocalization.localization_isScalarTower_of_submonoid_le is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (h : LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (Algebra.toHasSmul.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) (IsLocalization.localizationAlgebraOfSubmonoidLe.{u1, u2, u3} R _inst_1 S _inst_2 _inst_3 T _inst_5 _inst_6 M N h _inst_7 _inst_8)) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))
-but is expected to have type
- forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u1}) [_inst_5 : CommRing.{u1} T] [_inst_6 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (N : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (h : LE.le.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Preorder.toLE.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (PartialOrder.toPreorder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))))))) M N) [_inst_7 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u3, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) N T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_6], IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) (IsLocalization.localizationAlgebraOfSubmonoidLe.{u3, u2, u1} R _inst_1 S _inst_2 _inst_3 T _inst_5 _inst_6 M N h _inst_7 _inst_8)) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_6)
-Case conversion may be inaccurate. Consider using '#align is_localization.localization_is_scalar_tower_of_submonoid_le IsLocalization.localization_isScalarTower_of_submonoid_leₓ'. -/
/-- If `M ≤ N` are submonoids of `R`, then the natural map `M⁻¹S →+* N⁻¹S` commutes with the
localization maps -/
theorem localization_isScalarTower_of_submonoid_le (M N : Submonoid R) (h : M ≤ N)
@@ -255,9 +213,6 @@ noncomputable instance (x : Ideal R) [H : x.IsPrime] [IsDomain R] :
localizationAlgebraOfSubmonoidLe _ _ x.primeCompl (nonZeroDivisors R)
(by intro a ha; rw [mem_nonZeroDivisors_iff_ne_zero]; exact fun h => ha (h.symm ▸ x.zero_mem))
-/- warning: is_localization.is_localization_of_submonoid_le -> IsLocalization.isLocalization_of_submonoid_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_leₓ'. -/
/-- If `M ≤ N` are submonoids of `R`, then `N⁻¹S` is also the localization of `M⁻¹S` at `N`. -/
theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLocalization M S]
[IsLocalization N T] [Algebra S T] [IsScalarTower R S T] :
@@ -296,9 +251,6 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
· rintro ⟨a, b, e⟩; exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
-/- warning: is_localization.is_localization_of_is_exists_mul_mem -> IsLocalization.isLocalization_of_is_exists_mul_mem is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_is_exists_mul_mem IsLocalization.isLocalization_of_is_exists_mul_memₓ'. -/
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
localization at `N` is equal to the localizaton of `M`. -/
theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization M S] (h : M ≤ N)
@@ -328,9 +280,6 @@ open IsLocalization
variable (M)
-/- warning: is_fraction_ring.is_fraction_ring_of_is_localization -> IsFractionRing.isFractionRing_of_isLocalization is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalizationₓ'. -/
theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T] [Algebra R S]
[Algebra R T] [Algebra S T] [IsScalarTower R S T] [IsLocalization M S] [IsFractionRing R T]
(hM : M ≤ nonZeroDivisors R) : IsFractionRing S T :=
@@ -352,12 +301,6 @@ theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T
· exact hM
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
-/- warning: is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization -> IsFractionRing.isFractionRing_of_isDomain_of_isLocalization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) [_inst_5 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (S : Type.{u2}) (T : Type.{u3}) [_inst_6 : CommRing.{u2} S] [_inst_7 : CommRing.{u3} T] [_inst_8 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6))] [_inst_9 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))] [_inst_10 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_6) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))] [_inst_11 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)) _inst_8))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_6) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)) _inst_10))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)) _inst_9)))))] [_inst_12 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_6) _inst_8] [_inst_13 : IsFractionRing.{u1, u3} R _inst_1 T _inst_7 _inst_9], IsFractionRing.{u2, u3} S _inst_6 T _inst_7 _inst_10
-but is expected to have type
- forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) [_inst_5 : IsDomain.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))] (S : Type.{u2}) (T : Type.{u1}) [_inst_6 : CommRing.{u2} S] [_inst_7 : CommRing.{u1} T] [_inst_8 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6))] [_inst_9 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7))] [_inst_10 : Algebra.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_6) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7))] [_inst_11 : IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)) _inst_8) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_6) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7)) _inst_10) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7)) _inst_9)] [_inst_12 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_6) _inst_8] [_inst_13 : IsFractionRing.{u3, u1} R _inst_1 T _inst_7 _inst_9], IsFractionRing.{u2, u1} S _inst_6 T _inst_7 _inst_10
-Case conversion may be inaccurate. Consider using '#align is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization IsFractionRing.isFractionRing_of_isDomain_of_isLocalizationₓ'. -/
theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type _) [CommRing S]
[CommRing T] [Algebra R S] [Algebra R T] [Algebra S T] [IsScalarTower R S T]
[IsLocalization M S] [IsFractionRing R T] : IsFractionRing S T :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -71,10 +71,8 @@ theorem mem_localizationLocalizationSubmodule {x : R} :
by
rw [localization_localization_submodule, Submonoid.mem_comap, Submonoid.mem_sup]
constructor
- · rintro ⟨y, hy, _, ⟨z, hz, rfl⟩, e⟩
- exact ⟨⟨y, hy⟩, ⟨z, hz⟩, e.symm⟩
- · rintro ⟨y, z, e⟩
- exact ⟨y, y.prop, _, ⟨z, z.prop, rfl⟩, e.symm⟩
+ · rintro ⟨y, hy, _, ⟨z, hz, rfl⟩, e⟩; exact ⟨⟨y, hy⟩, ⟨z, hz⟩, e.symm⟩
+ · rintro ⟨y, z, e⟩; exact ⟨y, y.prop, _, ⟨z, z.prop, rfl⟩, e.symm⟩
#align is_localization.mem_localization_localization_submodule IsLocalization.mem_localizationLocalizationSubmodule
variable (M N) [IsLocalization M S]
@@ -255,10 +253,7 @@ theorem localization_isScalarTower_of_submonoid_le (M N : Submonoid R) (h : M
noncomputable instance (x : Ideal R) [H : x.IsPrime] [IsDomain R] :
Algebra (Localization.AtPrime x) (Localization (nonZeroDivisors R)) :=
localizationAlgebraOfSubmonoidLe _ _ x.primeCompl (nonZeroDivisors R)
- (by
- intro a ha
- rw [mem_nonZeroDivisors_iff_ne_zero]
- exact fun h => ha (h.symm ▸ x.zero_mem))
+ (by intro a ha; rw [mem_nonZeroDivisors_iff_ne_zero]; exact fun h => ha (h.symm ▸ x.zero_mem))
/- warning: is_localization.is_localization_of_submonoid_le -> IsLocalization.isLocalization_of_submonoid_le is a dubious translation:
<too large>
@@ -297,10 +292,8 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
simpa only [mul_comm] using this
simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
constructor
- · rintro ⟨a, e⟩
- exact ⟨a, 1, by convert e using 1 <;> simp <;> ring⟩
- · rintro ⟨a, b, e⟩
- exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
+ · rintro ⟨a, e⟩; exact ⟨a, 1, by convert e using 1 <;> simp <;> ring⟩
+ · rintro ⟨a, b, e⟩; exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
/- warning: is_localization.is_localization_of_is_exists_mul_mem -> IsLocalization.isLocalization_of_is_exists_mul_mem is a dubious translation:
@@ -315,9 +308,7 @@ theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization
have := IsLocalization.map_units S ⟨_, hm⟩
erw [map_mul] at this
exact (is_unit.mul_iff.mp this).2
- surj := fun z => by
- obtain ⟨⟨y, s⟩, e⟩ := IsLocalization.surj M z
- exact ⟨⟨y, _, h s.prop⟩, e⟩
+ surj := fun z => by obtain ⟨⟨y, s⟩, e⟩ := IsLocalization.surj M z; exact ⟨⟨y, _, h s.prop⟩, e⟩
eq_iff_exists := fun x₁ x₂ => by
rw [IsLocalization.eq_iff_exists M]
refine' ⟨fun ⟨x, hx⟩ => ⟨⟨_, h x.Prop⟩, hx⟩, _⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -62,10 +62,7 @@ def localizationLocalizationSubmodule : Submonoid R :=
variable {M N}
/- warning: is_localization.mem_localization_localization_submodule -> IsLocalization.mem_localizationLocalizationSubmodule is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))} {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] {N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))} {x : R}, Iff (Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) (Exists.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) (fun (y : coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) (fun (z : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) => Eq.{succ u2} 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 (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) x) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (coeSubtype.{succ u2} S (fun (x : S) => Membership.Mem.{u2, u2} S (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (SetLike.hasMem.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) x N))))) y) (coeFn.{max (succ u1) (succ u2), max (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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x M))))) z))))))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))} {S : Type.{u1}} [_inst_2 : CommRing.{u1} S] [_inst_3 : Algebra.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))] {N : Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))} {x : R}, Iff (Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u2, u1} R _inst_1 M S _inst_2 _inst_3 N)) (Exists.{succ u1} (Subtype.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) x N)) (fun (y : Subtype.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) x N)) => Exists.{succ u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x M)) (fun (z : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x M)) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) (algebraMap.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)) _inst_3) x) (HMul.hMul.{u1, u1, u1} S ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) M)) z)) S (instHMul.{u1} S (NonUnitalNonAssocRing.toMul.{u1} S (NonAssocRing.toNonUnitalNonAssocRing.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2))))) (Subtype.val.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Set.{u1} S) (Set.instMembershipSet.{u1} S) x (SetLike.coe.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) N)) y) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) (algebraMap.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)) _inst_3) (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) M)) z))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.mem_localization_localization_submodule IsLocalization.mem_localizationLocalizationSubmoduleₓ'. -/
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
@@ -83,10 +80,7 @@ theorem mem_localizationLocalizationSubmodule {x : R} :
variable (M N) [IsLocalization M S]
/- warning: is_localization.localization_localization_map_units -> IsLocalization.localization_localization_map_units is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)), IsUnit.{u3} T (Ring.toMonoid.{u3} T (CommRing.toRing.{u3} T _inst_5)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) y))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (y : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (CommSemiring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (CommRing.toCommSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) _inst_5)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_unitsₓ'. -/
theorem localization_localization_map_units [IsLocalization N T]
(y : localizationLocalizationSubmodule M N) : IsUnit (algebraMap R T y) :=
@@ -97,10 +91,7 @@ theorem localization_localization_map_units [IsLocalization N T]
#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_units
/- warning: is_localization.localization_localization_surj -> IsLocalization.localization_localization_surj is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (x : T), Exists.{succ u1} (Prod.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N))) (fun (y : Prod.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N))) => Eq.{succ u3} T (HMul.hMul.{u3, u3, u3} T T T (instHMul.{u3} T (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5)))) x (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) (Prod.snd.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) y)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) (Prod.fst.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) y)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (x : T), Exists.{succ u1} (Prod.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N)))) (fun (y : Prod.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N)))) => Eq.{succ u2} T (HMul.hMul.{u2, u2, u2} T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (Prod.snd.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y))) T (instHMul.{u2} T (NonUnitalNonAssocRing.toMul.{u2} T (NonAssocRing.toNonUnitalNonAssocRing.{u2} T (Ring.toNonAssocRing.{u2} T (CommRing.toRing.{u2} T _inst_5))))) x (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (Prod.snd.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Prod.fst.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_surj IsLocalization.localization_localization_surjₓ'. -/
theorem localization_localization_surj [IsLocalization N T] (x : T) :
∃ y : R × localizationLocalizationSubmodule M N, x * algebraMap R T y.2 = algebraMap R T y.1 :=
@@ -123,10 +114,7 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
/- warning: is_localization.localization_localization_eq_iff_exists -> IsLocalization.localization_localization_eq_iff_exists is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (x : R) (y : R), Iff (Eq.{succ u3} T (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) x) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) y)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) (fun (c : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) => Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) c) x) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) c) y)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (x : R) (y : R), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) y)) (Exists.{succ u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (fun (c : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) => Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) c) x) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) c) y)))
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_existsₓ'. -/
theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
algebraMap R T x = algebraMap R T y ↔
@@ -174,10 +162,7 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
include M
/- warning: is_localization.localization_localization_is_localization_of_has_all_units -> IsLocalization.localization_localization_isLocalization_of_has_all_units is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7], (forall (x : S), (IsUnit.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)) x) -> (Membership.Mem.{u2, u2} S (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (SetLike.hasMem.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) x N)) -> (IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (Submonoid.comap.{u1, u2, max u1 u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7], (forall (x : S), (IsUnit.{u3} S (MonoidWithZero.toMonoid.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) x) -> (Membership.mem.{u3, u3} S (Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))))) x N)) -> (IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) (Submonoid.comap.{u1, u3, max u1 u3} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))) (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (RingHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_unitsₓ'. -/
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, if
`N` contains all the units of `S`, then `N ⁻¹ S = T = (f⁻¹ N) ⁻¹ R`. I.e., the localization of a
@@ -194,10 +179,7 @@ theorem localization_localization_isLocalization_of_has_all_units [IsLocalizatio
#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_units
/- warning: is_localization.is_localization_is_localization_at_prime_is_localization -> IsLocalization.isLocalization_isLocalization_atPrime_isLocalization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] (p : Ideal.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) [Hp : Ideal.IsPrime.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) p] [_inst_10 : IsLocalization.AtPrime.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7 p Hp], IsLocalization.AtPrime.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6 (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) p) (Ideal.IsPrime.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) p Hp)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] (p : Ideal.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))) [Hp : Ideal.IsPrime.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) p] [_inst_10 : IsLocalization.AtPrime.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7 p Hp], IsLocalization.AtPrime.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6 (Ideal.comap.{u1, u3, max u1 u3} R S (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) p) (Ideal.IsPrime.comap.{u1, u3, max u1 u3} R S (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) p Hp)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_is_localization_at_prime_is_localization IsLocalization.isLocalization_isLocalization_atPrime_isLocalizationₓ'. -/
/--
Given a submodule `M ⊆ R` and a prime ideal `p` of `S = M⁻¹R`, with `f : R →+* S` the localization
@@ -219,10 +201,7 @@ instance (p : Ideal (Localization M)) [p.IsPrime] :
IsScalarTower.of_algebraMap_eq' rfl
/- warning: is_localization.localization_localization_at_prime_is_localization -> IsLocalization.localization_localization_atPrime_is_localization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M)))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) p], IsLocalization.AtPrime.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.commSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)) (IsLocalization.Localization.AtPrime.algebra.{u1} R _inst_1 M p _inst_10) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) p], IsLocalization.AtPrime.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)) (IsLocalization.instAlgebraAtPrimeLocalizationToCommMonoidInstCommSemiringLocalizationToCommMonoidToCommSemiringToSemiringPrimeCompl.{u1} R _inst_1 M p _inst_10) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localizationₓ'. -/
instance localization_localization_atPrime_is_localization (p : Ideal (Localization M))
[p.IsPrime] : IsLocalization.AtPrime (Localization.AtPrime p) (p.comap (algebraMap R _)) :=
@@ -230,10 +209,7 @@ instance localization_localization_atPrime_is_localization (p : Ideal (Localizat
#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localization
/- warning: is_localization.localization_localization_at_prime_iso_localization -> IsLocalization.localizationLocalizationAtPrimeIsoLocalization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M)))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) p], AlgEquiv.{u1, u1, u1} R (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_1.{u1} R _inst_1 M p _inst_10)) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_1.{u1} R _inst_1 M p _inst_10)) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_2.{u1} R _inst_1 M p _inst_10)))) (Ring.toSemiring.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toRing.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.commRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_2.{u1} R _inst_1 M p _inst_10)) R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (IsLocalization.Localization.AtPrime.algebra.{u1} R _inst_1 M p _inst_10)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) p], AlgEquiv.{u1, u1, u1} R (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)))) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10))) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (IsLocalization.instAlgebraAtPrimeLocalizationToCommMonoidInstCommSemiringLocalizationToCommMonoidToCommSemiringToSemiringPrimeCompl.{u1} R _inst_1 M p _inst_10)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_iso_localization IsLocalization.localizationLocalizationAtPrimeIsoLocalizationₓ'. -/
/-- Given a submodule `M ⊆ R` and a prime ideal `p` of `M⁻¹R`, with `f : R →+* S` the localization
map, then `(M⁻¹R)ₚ` is isomorphic (as an `R`-algebra) to the localization of `R` at `f⁻¹(p)`.
@@ -285,10 +261,7 @@ noncomputable instance (x : Ideal R) [H : x.IsPrime] [IsDomain R] :
exact fun h => ha (h.symm ▸ x.zero_mem))
/- warning: is_localization.is_localization_of_submonoid_le -> IsLocalization.isLocalization_of_submonoid_le is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6] [_inst_9 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_10 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))], IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) (Submonoid.map.{u1, u2, max u1 u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_9)
-but is expected to have type
- forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u1}) [_inst_5 : CommRing.{u1} T] [_inst_6 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (N : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))), (LE.le.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Preorder.toLE.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (PartialOrder.toPreorder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u3, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) N T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_6] [_inst_9 : Algebra.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] [_inst_10 : IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_9) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_6)], IsLocalization.{u2, u1} S (CommRing.toCommSemiring.{u2} S _inst_2) (Submonoid.map.{u3, u2, max u3 u2} R S (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (RingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (algebraMap.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_9)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_leₓ'. -/
/-- If `M ≤ N` are submonoids of `R`, then `N⁻¹S` is also the localization of `M⁻¹S` at `N`. -/
theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLocalization M S]
@@ -331,10 +304,7 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
/- warning: is_localization.is_localization_of_is_exists_mul_mem -> IsLocalization.isLocalization_of_is_exists_mul_mem is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall (x : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N), Exists.{succ u1} R (fun (m : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) m ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x N))))) x)) M)) -> (IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) N S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3)
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] (S : Type.{u1}) [_inst_2 : CommRing.{u1} S] [_inst_3 : Algebra.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))] (M : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (N : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) [_inst_7 : IsLocalization.{u2, u1} R (CommRing.toCommSemiring.{u2} R _inst_1) M S (CommRing.toCommSemiring.{u1} S _inst_2) _inst_3], (LE.le.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (Preorder.toLE.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (PartialOrder.toPreorder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))))))) M N) -> (forall (x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x N)), Exists.{succ u2} R (fun (m : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))))) m (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) N)) x)) M)) -> (IsLocalization.{u2, u1} R (CommRing.toCommSemiring.{u2} R _inst_1) N S (CommRing.toCommSemiring.{u1} S _inst_2) _inst_3)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_is_exists_mul_mem IsLocalization.isLocalization_of_is_exists_mul_memₓ'. -/
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
localization at `N` is equal to the localizaton of `M`. -/
@@ -368,10 +338,7 @@ open IsLocalization
variable (M)
/- warning: is_fraction_ring.is_fraction_ring_of_is_localization -> IsFractionRing.isFractionRing_of_isLocalization is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (S : Type.{u2}) (T : Type.{u3}) [_inst_5 : CommRing.{u2} S] [_inst_6 : CommRing.{u3} T] [_inst_7 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5))] [_inst_8 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))] [_inst_9 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_5) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))] [_inst_10 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_5) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)) _inst_8)))))] [_inst_11 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_5) _inst_7] [_inst_12 : IsFractionRing.{u1, u3} R _inst_1 T _inst_6 _inst_8], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) -> (IsFractionRing.{u2, u3} S _inst_5 T _inst_6 _inst_9)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (S : Type.{u3}) (T : Type.{u2}) [_inst_5 : CommRing.{u3} S] [_inst_6 : CommRing.{u2} T] [_inst_7 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_5))] [_inst_8 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6))] [_inst_9 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_5) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6))] [_inst_10 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_5)) _inst_7) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_5) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6)) _inst_9) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6)) _inst_8)] [_inst_11 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_5) _inst_7] [_inst_12 : IsFractionRing.{u1, u2} R _inst_1 T _inst_6 _inst_8], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))))) M (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) -> (IsFractionRing.{u3, u2} S _inst_5 T _inst_6 _inst_9)
+<too large>
Case conversion may be inaccurate. Consider using '#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalizationₓ'. -/
theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T] [Algebra R S]
[Algebra R T] [Algebra S T] [IsScalarTower R S T] [IsLocalization M S] [IsFractionRing R T]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Mario Carneiro, Johan Commelin, Amelia Livingston, Anne Baanen
! This file was ported from Lean 3 source module ring_theory.localization.localization_localization
-! leanprover-community/mathlib commit 831c494092374cfe9f50591ed0ac81a25efc5b86
+! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.RingTheory.Localization.FractionRing
/-!
# Localizations of localizations
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
## Implementation notes
See `src/ring_theory/localization/basic.lean` for a design overview.
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -45,6 +45,7 @@ section
variable [Algebra S T] [IsScalarTower R S T]
+#print IsLocalization.localizationLocalizationSubmodule /-
-- This should only be defined when `S` is the localization `M⁻¹R`, hence the nolint.
/-- Localizing wrt `M ⊆ R` and then wrt `N ⊆ S = M⁻¹R` is equal to the localization of `R` wrt this
module. See `localization_localization_is_localization`.
@@ -53,9 +54,16 @@ module. See `localization_localization_is_localization`.
def localizationLocalizationSubmodule : Submonoid R :=
(N ⊔ M.map (algebraMap R S)).comap (algebraMap R S)
#align is_localization.localization_localization_submodule IsLocalization.localizationLocalizationSubmodule
+-/
variable {M N}
+/- warning: is_localization.mem_localization_localization_submodule -> IsLocalization.mem_localizationLocalizationSubmodule is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))} {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] {N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))} {x : R}, Iff (Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) (Exists.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) (fun (y : coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) => Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) (fun (z : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) => Eq.{succ u2} 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 (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) x) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S (Distrib.toHasMul.{u2} S (Ring.toDistrib.{u2} S (CommRing.toRing.{u2} S _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) N) S (coeSubtype.{succ u2} S (fun (x : S) => Membership.Mem.{u2, u2} S (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (SetLike.hasMem.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) x N))))) y) (coeFn.{max (succ u1) (succ u2), max (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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (fun (_x : RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) M) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x M))))) z))))))
+but is expected to have type
+ forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] {M : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))} {S : Type.{u1}} [_inst_2 : CommRing.{u1} S] [_inst_3 : Algebra.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))] {N : Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))} {x : R}, Iff (Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u2, u1} R _inst_1 M S _inst_2 _inst_3 N)) (Exists.{succ u1} (Subtype.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) x N)) (fun (y : Subtype.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) x N)) => Exists.{succ u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x M)) (fun (z : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x M)) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) (algebraMap.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)) _inst_3) x) (HMul.hMul.{u1, u1, u1} S ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) M)) z)) S (instHMul.{u1} S (NonUnitalNonAssocRing.toMul.{u1} S (NonAssocRing.toNonUnitalNonAssocRing.{u1} S (Ring.toNonAssocRing.{u1} S (CommRing.toRing.{u1} S _inst_2))))) (Subtype.val.{succ u1} S (fun (x : S) => Membership.mem.{u1, u1} S (Set.{u1} S) (Set.instMembershipSet.{u1} S) x (SetLike.coe.{u1, u1} (Submonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u1} S (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))))) N)) y) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) 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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) (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_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))) (RingHom.instRingHomClassRingHom.{u2, u1} R S (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))))))) (algebraMap.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2)) _inst_3) (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) M)) z))))))
+Case conversion may be inaccurate. Consider using '#align is_localization.mem_localization_localization_submodule IsLocalization.mem_localizationLocalizationSubmoduleₓ'. -/
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
x ∈ localizationLocalizationSubmodule M N ↔
@@ -71,6 +79,12 @@ theorem mem_localizationLocalizationSubmodule {x : R} :
variable (M N) [IsLocalization M S]
+/- warning: is_localization.localization_localization_map_units -> IsLocalization.localization_localization_map_units is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)), IsUnit.{u3} T (Ring.toMonoid.{u3} T (CommRing.toRing.{u3} T _inst_5)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) y))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (y : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (MonoidWithZero.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (Semiring.toMonoidWithZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (CommSemiring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) (CommRing.toCommSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)) _inst_5)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y))
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_unitsₓ'. -/
theorem localization_localization_map_units [IsLocalization N T]
(y : localizationLocalizationSubmodule M N) : IsUnit (algebraMap R T y) :=
by
@@ -79,6 +93,12 @@ theorem localization_localization_map_units [IsLocalization N T]
exact ⟨IsLocalization.map_units T y', (IsLocalization.map_units _ z).map (algebraMap S T)⟩
#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_units
+/- warning: is_localization.localization_localization_surj -> IsLocalization.localization_localization_surj is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (x : T), Exists.{succ u1} (Prod.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N))) (fun (y : Prod.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N))) => Eq.{succ u3} T (HMul.hMul.{u3, u3, u3} T T T (instHMul.{u3} T (Distrib.toHasMul.{u3} T (Ring.toDistrib.{u3} T (CommRing.toRing.{u3} T _inst_5)))) x (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) (Prod.snd.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) y)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) (Prod.fst.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) y)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (x : T), Exists.{succ u1} (Prod.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N)))) (fun (y : Prod.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N)))) => Eq.{succ u2} T (HMul.hMul.{u2, u2, u2} T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (Prod.snd.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y))) T (instHMul.{u2} T (NonUnitalNonAssocRing.toMul.{u2} T (NonAssocRing.toNonUnitalNonAssocRing.{u2} T (Ring.toNonAssocRing.{u2} T (CommRing.toRing.{u2} T _inst_5))))) x (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (Prod.snd.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) (Prod.fst.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) y)))
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_surj IsLocalization.localization_localization_surjₓ'. -/
theorem localization_localization_surj [IsLocalization N T] (x : T) :
∃ y : R × localizationLocalizationSubmodule M N, x * algebraMap R T y.2 = algebraMap R T y.1 :=
by
@@ -99,6 +119,12 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
ring
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
+/- warning: is_localization.localization_localization_eq_iff_exists -> IsLocalization.localization_localization_eq_iff_exists is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7] (x : R) (y : R), Iff (Eq.{succ u3} T (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) x) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (fun (_x : RingHom.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) => R -> T) (RingHom.hasCoeToFun.{u1, u3} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))) (algebraMap.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6) y)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) (fun (c : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) => Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) c) x) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N)))))) c) y)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7] (x : R) (y : R), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (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} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)))) R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} T (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))))))) (algebraMap.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6) y)) (Exists.{succ u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) (fun (c : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))))) x (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) => Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) c) x) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (Subtype.val.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Set.{u1} R) (Set.instMembershipSet.{u1} R) x (SetLike.coe.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N))) c) y)))
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_existsₓ'. -/
theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
algebraMap R T x = algebraMap R T y ↔
∃ c : localizationLocalizationSubmodule M N, ↑c * x = ↑c * y :=
@@ -126,6 +152,12 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
mul_comm _ ↑z₁]
#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_exists
+/- warning: is_localization.localization_localization_is_localization -> IsLocalization.localization_localization_isLocalization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7], IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (IsLocalization.localizationLocalizationSubmodule.{u1, u2} R _inst_1 M S _inst_2 _inst_3 N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7], IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) (IsLocalization.localizationLocalizationSubmodule.{u1, u3} R _inst_1 M S _inst_2 _inst_3 N) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_is_localization IsLocalization.localization_localization_isLocalizationₓ'. -/
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
`N ⁻¹ S = T = (f⁻¹ (N • f(M))) ⁻¹ R`. I.e., the localization of a localization is a localization.
-/
@@ -138,6 +170,12 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
include M
+/- warning: is_localization.localization_localization_is_localization_of_has_all_units -> IsLocalization.localization_localization_isLocalization_of_has_all_units is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (N : Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7], (forall (x : S), (IsUnit.{u2} S (Ring.toMonoid.{u2} S (CommRing.toRing.{u2} S _inst_2)) x) -> (Membership.Mem.{u2, u2} S (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) (SetLike.hasMem.{u2, u2} (Submonoid.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2)))))) S (Submonoid.setLike.{u2} S (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))))) x N)) -> (IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (Submonoid.comap.{u1, u2, max u1 u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (NonAssocRing.toNonAssocSemiring.{u2} S (Ring.toNonAssocRing.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (N : Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] [_inst_10 : IsLocalization.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) N T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7], (forall (x : S), (IsUnit.{u3} S (MonoidWithZero.toMonoid.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) x) -> (Membership.mem.{u3, u3} S (Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))))) S (Submonoid.instSetLikeSubmonoid.{u3} S (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))))) x N)) -> (IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) (Submonoid.comap.{u1, u3, max u1 u3} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u3} S (NonAssocSemiring.toMulZeroOneClass.{u3} S (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))) (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (RingHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6)
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_unitsₓ'. -/
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, if
`N` contains all the units of `S`, then `N ⁻¹ S = T = (f⁻¹ N) ⁻¹ R`. I.e., the localization of a
localization is a localization.
@@ -152,6 +190,12 @@ theorem localization_localization_isLocalization_of_has_all_units [IsLocalizatio
exact H _ (IsLocalization.map_units _ ⟨x, hx⟩)
#align is_localization.localization_localization_is_localization_of_has_all_units IsLocalization.localization_localization_isLocalization_of_has_all_units
+/- warning: is_localization.is_localization_is_localization_at_prime_is_localization -> IsLocalization.isLocalization_isLocalization_atPrime_isLocalization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) {S : Type.{u2}} [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_7 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))] [_inst_9 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] (p : Ideal.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) [Hp : Ideal.IsPrime.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) p] [_inst_10 : IsLocalization.AtPrime.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_7 p Hp], IsLocalization.AtPrime.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6 (Ideal.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) p) (Ideal.IsPrime.comap.{u1, u2, max u1 u2} R S (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) p Hp)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) {S : Type.{u3}} [_inst_2 : CommRing.{u3} S] [_inst_3 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))] (T : Type.{u2}) [_inst_5 : CommRing.{u2} T] [_inst_6 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_7 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5))] [_inst_8 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_2) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_7) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_5)) _inst_6)] [_inst_9 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_2) _inst_3] (p : Ideal.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2))) [Hp : Ideal.IsPrime.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) p] [_inst_10 : IsLocalization.AtPrime.{u3, u2} S (CommRing.toCommSemiring.{u3} S _inst_2) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_7 p Hp], IsLocalization.AtPrime.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) T (CommRing.toCommSemiring.{u2} T _inst_5) _inst_6 (Ideal.comap.{u1, u3, max u1 u3} R S (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) p) (Ideal.IsPrime.comap.{u1, u3, max u1 u3} R S (RingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) (RingHom.instRingHomClassRingHom.{u1, u3} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)))) (algebraMap.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_2)) _inst_3) p Hp)
+Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_is_localization_at_prime_is_localization IsLocalization.isLocalization_isLocalization_atPrime_isLocalizationₓ'. -/
/--
Given a submodule `M ⊆ R` and a prime ideal `p` of `S = M⁻¹R`, with `f : R →+* S` the localization
map, then `T = Sₚ` is the localization of `R` at `f⁻¹(p)`.
@@ -171,11 +215,23 @@ instance (p : Ideal (Localization M)) [p.IsPrime] :
IsScalarTower R (Localization M) (Localization.AtPrime p) :=
IsScalarTower.of_algebraMap_eq' rfl
+/- warning: is_localization.localization_localization_at_prime_is_localization -> IsLocalization.localization_localization_atPrime_is_localization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M)))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) p], IsLocalization.AtPrime.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.commSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)) (IsLocalization.Localization.AtPrime.algebra.{u1} R _inst_1 M p _inst_10) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) p], IsLocalization.AtPrime.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)) (IsLocalization.instAlgebraAtPrimeLocalizationToCommMonoidInstCommSemiringLocalizationToCommMonoidToCommSemiringToSemiringPrimeCompl.{u1} R _inst_1 M p _inst_10) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localizationₓ'. -/
instance localization_localization_atPrime_is_localization (p : Ideal (Localization M))
[p.IsPrime] : IsLocalization.AtPrime (Localization.AtPrime p) (p.comap (algebraMap R _)) :=
isLocalization_isLocalization_atPrime_isLocalization M _ _
#align is_localization.localization_localization_at_prime_is_localization IsLocalization.localization_localization_atPrime_is_localization
+/- warning: is_localization.localization_localization_at_prime_iso_localization -> IsLocalization.localizationLocalizationAtPrimeIsoLocalization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M)))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) p], AlgEquiv.{u1, u1, u1} R (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_1.{u1} R _inst_1 M p _inst_10)) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_1.{u1} R _inst_1 M p _inst_10)) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_2.{u1} R _inst_1 M p _inst_10)))) (Ring.toSemiring.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toRing.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.commRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10)))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (RingHom.ringHomClass.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toRing.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.commRing.{u1} R _inst_1 M))) (Localization.algebra.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (IsLocalization.localizationLocalizationAtPrimeIsoLocalization._proof_2.{u1} R _inst_1 M p _inst_10)) R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (IsLocalization.Localization.AtPrime.algebra.{u1} R _inst_1 M p _inst_10)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (p : Ideal.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M))) [_inst_10 : Ideal.IsPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) p], AlgEquiv.{u1, u1, u1} R (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)))) (CommSemiring.toSemiring.{u1} (Localization.AtPrime.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) (Ideal.primeCompl.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M) p _inst_10))) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.primeCompl.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (Ideal.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p) (Ideal.IsPrime.comap.{u1, u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (RingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (RingHom.instRingHomClassRingHom.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)))) (algebraMap.{u1, u1} R (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u1} (Localization.{u1} R (CommRing.toCommMonoid.{u1} R _inst_1) M) (Localization.instCommSemiringLocalizationToCommMonoid.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M)) (Localization.instAlgebraLocalizationToCommMonoidToSemiringInstCommSemiringLocalizationToCommMonoid.{u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) M R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) p _inst_10)) R (CommRing.toCommSemiring.{u1} R _inst_1) (Algebra.id.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (IsLocalization.instAlgebraAtPrimeLocalizationToCommMonoidInstCommSemiringLocalizationToCommMonoidToCommSemiringToSemiringPrimeCompl.{u1} R _inst_1 M p _inst_10)
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_localization_at_prime_iso_localization IsLocalization.localizationLocalizationAtPrimeIsoLocalizationₓ'. -/
/-- Given a submodule `M ⊆ R` and a prime ideal `p` of `M⁻¹R`, with `f : R →+* S` the localization
map, then `(M⁻¹R)ₚ` is isomorphic (as an `R`-algebra) to the localization of `R` at `f⁻¹(p)`.
-/
@@ -189,6 +245,12 @@ end
variable (S)
+/- warning: is_localization.localization_algebra_of_submonoid_le -> IsLocalization.localizationAlgebraOfSubmonoidLe is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u3} T (CommRing.toCommSemiring.{u3} T _inst_5)))
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_algebra_of_submonoid_le IsLocalization.localizationAlgebraOfSubmonoidLeₓ'. -/
/-- Given submonoids `M ≤ N` of `R`, this is the canonical algebra structure
of `M⁻¹S` acting on `N⁻¹S`. -/
noncomputable def localizationAlgebraOfSubmonoidLe (M N : Submonoid R) (h : M ≤ N)
@@ -196,6 +258,12 @@ noncomputable def localizationAlgebraOfSubmonoidLe (M N : Submonoid R) (h : M
(IsLocalization.lift fun y => (map_units T ⟨↑y, h y.Prop⟩ : _) : S →+* T).toAlgebra
#align is_localization.localization_algebra_of_submonoid_le IsLocalization.localizationAlgebraOfSubmonoidLe
+/- warning: is_localization.localization_is_scalar_tower_of_submonoid_le -> IsLocalization.localization_isScalarTower_of_submonoid_le is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (h : LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6], IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (Algebra.toHasSmul.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) (IsLocalization.localizationAlgebraOfSubmonoidLe.{u1, u2, u3} R _inst_1 S _inst_2 _inst_3 T _inst_5 _inst_6 M N h _inst_7 _inst_8)) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))
+but is expected to have type
+ forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u1}) [_inst_5 : CommRing.{u1} T] [_inst_6 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (N : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (h : LE.le.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Preorder.toLE.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (PartialOrder.toPreorder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))))))) M N) [_inst_7 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u3, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) N T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_6], IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) (IsLocalization.localizationAlgebraOfSubmonoidLe.{u3, u2, u1} R _inst_1 S _inst_2 _inst_3 T _inst_5 _inst_6 M N h _inst_7 _inst_8)) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_6)
+Case conversion may be inaccurate. Consider using '#align is_localization.localization_is_scalar_tower_of_submonoid_le IsLocalization.localization_isScalarTower_of_submonoid_leₓ'. -/
/-- If `M ≤ N` are submonoids of `R`, then the natural map `M⁻¹S →+* N⁻¹S` commutes with the
localization maps -/
theorem localization_isScalarTower_of_submonoid_le (M N : Submonoid R) (h : M ≤ N)
@@ -213,6 +281,12 @@ noncomputable instance (x : Ideal R) [H : x.IsPrime] [IsDomain R] :
rw [mem_nonZeroDivisors_iff_ne_zero]
exact fun h => ha (h.symm ▸ x.zero_mem))
+/- warning: is_localization.is_localization_of_submonoid_le -> IsLocalization.isLocalization_of_submonoid_le is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (T : Type.{u3}) [_inst_5 : CommRing.{u3} T] [_inst_6 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))), (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) N T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_6] [_inst_9 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))] [_inst_10 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_2) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_5)) _inst_6)))))], IsLocalization.{u2, u3} S (CommRing.toCommSemiring.{u2} S _inst_2) (Submonoid.map.{u1, u2, max u1 u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (RingHom.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{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 (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))) (RingHom.ringHomClass.{u1, u2} R S (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))))) (algebraMap.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u3} T _inst_5) _inst_9)
+but is expected to have type
+ forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))] (T : Type.{u1}) [_inst_5 : CommRing.{u1} T] [_inst_6 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (N : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))), (LE.le.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Preorder.toLE.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (PartialOrder.toPreorder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))))))) M N) -> (forall [_inst_7 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3] [_inst_8 : IsLocalization.{u3, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) N T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_6] [_inst_9 : Algebra.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5))] [_inst_10 : IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_2) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_9) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_5)) _inst_6)], IsLocalization.{u2, u1} S (CommRing.toCommSemiring.{u2} S _inst_2) (Submonoid.map.{u3, u2, max u3 u2} R S (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (RingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) (RingHomClass.toMonoidHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)))) R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))) (RingHom.instRingHomClassRingHom.{u3, u2} R S (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))) (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2))))) (algebraMap.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_2)) _inst_3) N) T (CommRing.toCommSemiring.{u1} T _inst_5) _inst_9)
+Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_leₓ'. -/
/-- If `M ≤ N` are submonoids of `R`, then `N⁻¹S` is also the localization of `M⁻¹S` at `N`. -/
theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLocalization M S]
[IsLocalization N T] [Algebra S T] [IsScalarTower R S T] :
@@ -253,6 +327,12 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
+/- warning: is_localization.is_localization_of_is_exists_mul_mem -> IsLocalization.isLocalization_of_is_exists_mul_mem is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (S : Type.{u2}) [_inst_2 : CommRing.{u2} S] [_inst_3 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_2))] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (N : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) [_inst_7 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M N) -> (forall (x : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N), Exists.{succ u1} R (fun (m : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (CommRing.toRing.{u1} R _inst_1)))) m ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) N) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))))) x N))))) x)) M)) -> (IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) N S (CommRing.toCommSemiring.{u2} S _inst_2) _inst_3)
+but is expected to have type
+ forall {R : Type.{u2}} [_inst_1 : CommRing.{u2} R] (S : Type.{u1}) [_inst_2 : CommRing.{u1} S] [_inst_3 : Algebra.{u2, u1} R S (CommRing.toCommSemiring.{u2} R _inst_1) (CommSemiring.toSemiring.{u1} S (CommRing.toCommSemiring.{u1} S _inst_2))] (M : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (N : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) [_inst_7 : IsLocalization.{u2, u1} R (CommRing.toCommSemiring.{u2} R _inst_1) M S (CommRing.toCommSemiring.{u1} S _inst_2) _inst_3], (LE.le.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (Preorder.toLE.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (PartialOrder.toPreorder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))))))) M N) -> (forall (x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) x N)), Exists.{succ u2} R (fun (m : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1))))))) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_1))))) m (Subtype.val.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Set.{u2} R) (Set.instMembershipSet.{u2} R) x (SetLike.coe.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_1)))))) N)) x)) M)) -> (IsLocalization.{u2, u1} R (CommRing.toCommSemiring.{u2} R _inst_1) N S (CommRing.toCommSemiring.{u1} S _inst_2) _inst_3)
+Case conversion may be inaccurate. Consider using '#align is_localization.is_localization_of_is_exists_mul_mem IsLocalization.isLocalization_of_is_exists_mul_memₓ'. -/
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
localization at `N` is equal to the localizaton of `M`. -/
theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization M S] (h : M ≤ N)
@@ -284,6 +364,12 @@ open IsLocalization
variable (M)
+/- warning: is_fraction_ring.is_fraction_ring_of_is_localization -> IsFractionRing.isFractionRing_of_isLocalization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (S : Type.{u2}) (T : Type.{u3}) [_inst_5 : CommRing.{u2} S] [_inst_6 : CommRing.{u3} T] [_inst_7 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5))] [_inst_8 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))] [_inst_9 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_5) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))] [_inst_10 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_5)) _inst_7))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_5) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_6)) _inst_8)))))] [_inst_11 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_5) _inst_7] [_inst_12 : IsFractionRing.{u1, u3} R _inst_1 T _inst_6 _inst_8], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Preorder.toHasLe.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) (Submonoid.completeLattice.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))))))) M (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))))) -> (IsFractionRing.{u2, u3} S _inst_5 T _inst_6 _inst_9)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (S : Type.{u3}) (T : Type.{u2}) [_inst_5 : CommRing.{u3} S] [_inst_6 : CommRing.{u2} T] [_inst_7 : Algebra.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_5))] [_inst_8 : Algebra.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6))] [_inst_9 : Algebra.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_5) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6))] [_inst_10 : IsScalarTower.{u1, u3, u2} R S T (Algebra.toSMul.{u1, u3} R S (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u3} S (CommRing.toCommSemiring.{u3} S _inst_5)) _inst_7) (Algebra.toSMul.{u3, u2} S T (CommRing.toCommSemiring.{u3} S _inst_5) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6)) _inst_9) (Algebra.toSMul.{u1, u2} R T (CommRing.toCommSemiring.{u1} R _inst_1) (CommSemiring.toSemiring.{u2} T (CommRing.toCommSemiring.{u2} T _inst_6)) _inst_8)] [_inst_11 : IsLocalization.{u1, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u3} S _inst_5) _inst_7] [_inst_12 : IsFractionRing.{u1, u2} R _inst_1 T _inst_6 _inst_8], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))))))) M (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) -> (IsFractionRing.{u3, u2} S _inst_5 T _inst_6 _inst_9)
+Case conversion may be inaccurate. Consider using '#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalizationₓ'. -/
theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T] [Algebra R S]
[Algebra R T] [Algebra S T] [IsScalarTower R S T] [IsLocalization M S] [IsFractionRing R T]
(hM : M ≤ nonZeroDivisors R) : IsFractionRing S T :=
@@ -305,6 +391,12 @@ theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T
· exact hM
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
+/- warning: is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization -> IsFractionRing.isFractionRing_of_isDomain_of_isLocalization is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))))) [_inst_5 : IsDomain.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_1))] (S : Type.{u2}) (T : Type.{u3}) [_inst_6 : CommRing.{u2} S] [_inst_7 : CommRing.{u3} T] [_inst_8 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6))] [_inst_9 : Algebra.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))] [_inst_10 : Algebra.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_6) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))] [_inst_11 : IsScalarTower.{u1, u2, u3} R S T (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u2} S (CommRing.toRing.{u2} S _inst_6)) _inst_8))))) (SMulZeroClass.toHasSmul.{u2, u3} S T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S T (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S T (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (Module.toMulActionWithZero.{u2, u3} S T (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))))) (Algebra.toModule.{u2, u3} S T (CommRing.toCommSemiring.{u2} S _inst_6) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)) _inst_10))))) (SMulZeroClass.toHasSmul.{u1, u3} R T (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R T (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R T (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (AddZeroClass.toHasZero.{u3} T (AddMonoid.toAddZeroClass.{u3} T (AddCommMonoid.toAddMonoid.{u3} T (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)))))))) (Module.toMulActionWithZero.{u1, u3} R T (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} T (Semiring.toNonAssocSemiring.{u3} T (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7))))) (Algebra.toModule.{u1, u3} R T (CommRing.toCommSemiring.{u1} R _inst_1) (Ring.toSemiring.{u3} T (CommRing.toRing.{u3} T _inst_7)) _inst_9)))))] [_inst_12 : IsLocalization.{u1, u2} R (CommRing.toCommSemiring.{u1} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_6) _inst_8] [_inst_13 : IsFractionRing.{u1, u3} R _inst_1 T _inst_7 _inst_9], IsFractionRing.{u2, u3} S _inst_6 T _inst_7 _inst_10
+but is expected to have type
+ forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (M : Submonoid.{u3} R (MulZeroOneClass.toMulOneClass.{u3} R (NonAssocSemiring.toMulZeroOneClass.{u3} R (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1)))))) [_inst_5 : IsDomain.{u3} R (CommSemiring.toSemiring.{u3} R (CommRing.toCommSemiring.{u3} R _inst_1))] (S : Type.{u2}) (T : Type.{u1}) [_inst_6 : CommRing.{u2} S] [_inst_7 : CommRing.{u1} T] [_inst_8 : Algebra.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6))] [_inst_9 : Algebra.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7))] [_inst_10 : Algebra.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_6) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7))] [_inst_11 : IsScalarTower.{u3, u2, u1} R S T (Algebra.toSMul.{u3, u2} R S (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u2} S (CommRing.toCommSemiring.{u2} S _inst_6)) _inst_8) (Algebra.toSMul.{u2, u1} S T (CommRing.toCommSemiring.{u2} S _inst_6) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7)) _inst_10) (Algebra.toSMul.{u3, u1} R T (CommRing.toCommSemiring.{u3} R _inst_1) (CommSemiring.toSemiring.{u1} T (CommRing.toCommSemiring.{u1} T _inst_7)) _inst_9)] [_inst_12 : IsLocalization.{u3, u2} R (CommRing.toCommSemiring.{u3} R _inst_1) M S (CommRing.toCommSemiring.{u2} S _inst_6) _inst_8] [_inst_13 : IsFractionRing.{u3, u1} R _inst_1 T _inst_7 _inst_9], IsFractionRing.{u2, u1} S _inst_6 T _inst_7 _inst_10
+Case conversion may be inaccurate. Consider using '#align is_fraction_ring.is_fraction_ring_of_is_domain_of_is_localization IsFractionRing.isFractionRing_of_isDomain_of_isLocalizationₓ'. -/
theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type _) [CommRing S]
[CommRing T] [Algebra R S] [Algebra R T] [Algebra S T] [IsScalarTower R S T]
[IsLocalization M S] [IsFractionRing R T] : IsFractionRing S T :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -300,7 +300,8 @@ theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T
apply IsLocalization.injective S hM
rw [map_zero]
apply hx
- rw [← (map_units S s).mul_left_inj, mul_assoc, e, ← map_mul, hz, map_zero, zero_mul]
+ rw [← (map_units S s).mul_left_inj, mul_assoc, e, ← map_mul, hz, map_zero,
+ MulZeroClass.zero_mul]
· exact hM
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -30,9 +30,7 @@ namespace IsLocalization
section LocalizationLocalization
variable {R : Type*} [CommSemiring R] (M : Submonoid R) {S : Type*} [CommSemiring S]
-
variable [Algebra R S] {P : Type*} [CommSemiring P]
-
variable (N : Submonoid S) (T : Type*) [CommSemiring T] [Algebra R T]
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -99,15 +99,15 @@ theorem localization_localization_exists_of_eq [IsLocalization N T] (x y : R) :
rintro ⟨z, eq₁⟩
rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
dsimp only at eq₂
- suffices : (algebraMap R S) (x * z' : R) = (algebraMap R S) (y * z')
- · obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp this
+ suffices (algebraMap R S) (x * z' : R) = (algebraMap R S) (y * z') by
+ obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp this
refine ⟨⟨c * z', ?_⟩, ?_⟩
· rw [mem_localizationLocalizationSubmodule]
refine ⟨z, c * s, ?_⟩
rw [map_mul, ← eq₂, Submonoid.coe_mul, map_mul, mul_left_comm]
· rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
- · rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ (z : S), eq₁,
- mul_comm _ (z : S)]
+ rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ (z : S), eq₁,
+ mul_comm _ (z : S)]
#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_exists_of_eqₓ
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
@@ -213,9 +213,9 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
obtain ⟨⟨y₂, s₂⟩, e₂⟩ := IsLocalization.surj M x₂
refine (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).mpr.comp ?_
dsimp only at e₁ e₂ ⊢
- suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) →
- ∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁))
- · have h₁ := @IsUnit.mul_left_inj T _ _ (algebraMap S T x₁) (algebraMap S T x₂)
+ suffices algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) →
+ ∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁)) by
+ have h₁ := @IsUnit.mul_left_inj T _ _ (algebraMap S T x₁) (algebraMap S T x₂)
(IsLocalization.map_units T ⟨(s₁ : R), h s₁.prop⟩)
have h₂ := @IsUnit.mul_left_inj T _ _ ((algebraMap S T x₁) * (algebraMap R T s₁))
((algebraMap S T x₂) * (algebraMap R T s₁))
@@ -228,9 +228,9 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
(IsLocalization.map_units S s₂).mul_left_inj] at this
rw [h₂, h₁] at this
simpa only [mul_comm] using this
- · simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
- intro ⟨a, e⟩
- exact ⟨a, 1, by convert e using 1 <;> simp⟩ }
+ simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
+ intro ⟨a, e⟩
+ exact ⟨a, 1, by convert e using 1 <;> simp⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
Change hypothesis CommRing to CommSemiring in the first section of the file
@@ -22,9 +22,6 @@ commutative ring, field of fractions
-/
-variable {R : Type*} [CommRing R] (M : Submonoid R) {S : Type*} [CommRing S]
-
-variable [Algebra R S] {P : Type*} [CommRing P]
open Function BigOperators
@@ -32,7 +29,12 @@ namespace IsLocalization
section LocalizationLocalization
-variable (N : Submonoid S) (T : Type*) [CommRing T] [Algebra R T]
+variable {R : Type*} [CommSemiring R] (M : Submonoid R) {S : Type*} [CommSemiring S]
+
+variable [Algebra R S] {P : Type*} [CommSemiring P]
+
+variable (N : Submonoid S) (T : Type*) [CommSemiring T] [Algebra R T]
+
section
@@ -254,6 +256,8 @@ end IsLocalization
namespace IsFractionRing
+variable {R : Type*} [CommRing R] (M : Submonoid R) {S : Type*} [CommRing S]
+
open IsLocalization
theorem isFractionRing_of_isLocalization (S T : Type*) [CommRing S] [CommRing T] [Algebra R S]
The other direction is a consequence of IsLocalization.map_units
.
Also do the same for LocalizationMap
and IsLocalizedModule
.
This means we have one less fact to prove when constructing an IsLocalization
(etc.) instance (thus many proofs are golfed), but once we construct it we still have access to the eq_iff_exists
lemmas (without the prime) so the API doesn't get less powerful.
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
@@ -89,32 +89,24 @@ theorem localization_localization_surj [IsLocalization N T] (x : T) :
ring
#align is_localization.localization_localization_surj IsLocalization.localization_localization_surj
-theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
- algebraMap R T x = algebraMap R T y ↔
+theorem localization_localization_exists_of_eq [IsLocalization N T] (x y : R) :
+ algebraMap R T x = algebraMap R T y →
∃ c : localizationLocalizationSubmodule M N, ↑c * x = ↑c * y := by
rw [IsScalarTower.algebraMap_apply R S T, IsScalarTower.algebraMap_apply R S T,
IsLocalization.eq_iff_exists N T]
- constructor
- · rintro ⟨z, eq₁⟩
- rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
- dsimp only at eq₂
- suffices : (algebraMap R S) (x * z' : R) = (algebraMap R S) (y * z')
- · obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp this
- refine ⟨⟨c * z', ?_⟩, ?_⟩
- · rw [mem_localizationLocalizationSubmodule]
- refine ⟨z, c * s, ?_⟩
- rw [map_mul, ← eq₂, Submonoid.coe_mul, map_mul, mul_left_comm]
- · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
- · rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ (z : S), eq₁,
- mul_comm _ (z : S)]
- · rintro ⟨⟨c, hc⟩, eq₁ : c * x = c * y⟩
- rw [mem_localizationLocalizationSubmodule] at hc
- rcases hc with ⟨z₁, z, eq₂⟩
- use z₁
- refine (IsLocalization.map_units S z).mul_right_inj.mp ?_
- rw [← mul_assoc, mul_comm _ (z₁ : S), ← eq₂, ← map_mul, eq₁, map_mul, eq₂, ← mul_assoc,
- mul_comm _ (z₁ : S)]
-#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_eq_iff_exists
+ rintro ⟨z, eq₁⟩
+ rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
+ dsimp only at eq₂
+ suffices : (algebraMap R S) (x * z' : R) = (algebraMap R S) (y * z')
+ · obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp this
+ refine ⟨⟨c * z', ?_⟩, ?_⟩
+ · rw [mem_localizationLocalizationSubmodule]
+ refine ⟨z, c * s, ?_⟩
+ rw [map_mul, ← eq₂, Submonoid.coe_mul, map_mul, mul_left_comm]
+ · rwa [mul_comm _ z', mul_comm _ z', ← mul_assoc, ← mul_assoc] at eq₃
+ · rw [map_mul, map_mul, ← eq₂, ← mul_assoc, ← mul_assoc, mul_comm _ (z : S), eq₁,
+ mul_comm _ (z : S)]
+#align is_localization.localization_localization_eq_iff_exists IsLocalization.localization_localization_exists_of_eqₓ
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, we have
`N ⁻¹ S = T = (f⁻¹ (N • f(M))) ⁻¹ R`. I.e., the localization of a localization is a localization.
@@ -123,7 +115,7 @@ theorem localization_localization_isLocalization [IsLocalization N T] :
IsLocalization (localizationLocalizationSubmodule M N) T :=
{ map_units' := localization_localization_map_units M N T
surj' := localization_localization_surj M N T
- eq_iff_exists' := localization_localization_eq_iff_exists M N T _ _ }
+ exists_of_eq := localization_localization_exists_of_eq M N T _ _ }
#align is_localization.localization_localization_is_localization IsLocalization.localization_localization_isLocalization
/-- Given submodules `M ⊆ R` and `N ⊆ S = M⁻¹R`, with `f : R →+* S` the localization map, if
@@ -214,12 +206,12 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
obtain ⟨⟨x, s⟩, e⟩ := IsLocalization.surj N y
refine ⟨⟨algebraMap R S x, _, _, s.prop, rfl⟩, ?_⟩
simpa [← IsScalarTower.algebraMap_apply] using e
- eq_iff_exists' := fun {x₁ x₂} => by
+ exists_of_eq := fun {x₁ x₂} => by
obtain ⟨⟨y₁, s₁⟩, e₁⟩ := IsLocalization.surj M x₁
obtain ⟨⟨y₂, s₂⟩, e₂⟩ := IsLocalization.surj M x₂
- refine' Iff.trans _ (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).symm
+ refine (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).mpr.comp ?_
dsimp only at e₁ e₂ ⊢
- suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) ↔
+ suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) →
∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁))
· have h₁ := @IsUnit.mul_left_inj T _ _ (algebraMap S T x₁) (algebraMap S T x₂)
(IsLocalization.map_units T ⟨(s₁ : R), h s₁.prop⟩)
@@ -235,11 +227,8 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
rw [h₂, h₁] at this
simpa only [mul_comm] using this
· simp_rw [IsLocalization.eq_iff_exists N T, IsLocalization.eq_iff_exists M S]
- constructor
- · rintro ⟨a, e⟩
- exact ⟨a, 1, by convert e using 1 <;> simp⟩
- · rintro ⟨a, b, e⟩
- exact ⟨a * (⟨_, h b.prop⟩ : N), by convert e using 1 <;> simp <;> ring⟩ }
+ intro ⟨a, e⟩
+ exact ⟨a, 1, by convert e using 1 <;> simp⟩ }
#align is_localization.is_localization_of_submonoid_le IsLocalization.isLocalization_of_submonoid_le
/-- If `M ≤ N` are submonoids of `R` such that `∀ x : N, ∃ m : R, m * x ∈ M`, then the
@@ -254,13 +243,9 @@ theorem isLocalization_of_is_exists_mul_mem (M N : Submonoid R) [IsLocalization
surj' := fun z => by
obtain ⟨⟨y, s⟩, e⟩ := IsLocalization.surj M z
exact ⟨⟨y, _, h s.prop⟩, e⟩
- eq_iff_exists' := fun {_ _} => by
+ exists_of_eq := fun {_ _} => by
rw [IsLocalization.eq_iff_exists M]
- refine ⟨fun ⟨x, hx⟩ => ⟨⟨_, h x.prop⟩, hx⟩, ?_⟩
- rintro ⟨x, h⟩
- obtain ⟨m, hm⟩ := h' x
- refine ⟨⟨_, hm⟩, ?_⟩
- simp [h, mul_assoc] }
+ exact fun ⟨x, hx⟩ => ⟨⟨_, h x.prop⟩, hx⟩ }
#align is_localization.is_localization_of_is_exists_mul_mem IsLocalization.isLocalization_of_is_exists_mul_mem
end LocalizationLocalization
A linter that throws on seeing a colon at the start of a line, according to the style guideline that says these operators should go before linebreaks.
@@ -71,8 +71,8 @@ theorem localization_localization_map_units [IsLocalization N T]
#align is_localization.localization_localization_map_units IsLocalization.localization_localization_map_units
theorem localization_localization_surj [IsLocalization N T] (x : T) :
- ∃ y : R × localizationLocalizationSubmodule M N, x * algebraMap R T y.2 = algebraMap R T y.1
- := by
+ ∃ y : R × localizationLocalizationSubmodule M N,
+ x * algebraMap R T y.2 = algebraMap R T y.1 := by
rcases IsLocalization.surj N x with ⟨⟨y, s⟩, eq₁⟩
-- x = y / s
rcases IsLocalization.surj M y with ⟨⟨z, t⟩, eq₂⟩
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -287,7 +287,7 @@ theorem isFractionRing_of_isLocalization (S T : Type*) [CommRing S] [CommRing T]
rw [map_zero]
apply hx
rw [← (map_units S s).mul_left_inj, mul_assoc, e, ← map_mul, hz, map_zero,
- MulZeroClass.zero_mul]
+ zero_mul]
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type*) [CommRing S]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -22,9 +22,9 @@ commutative ring, field of fractions
-/
-variable {R : Type _} [CommRing R] (M : Submonoid R) {S : Type _} [CommRing S]
+variable {R : Type*} [CommRing R] (M : Submonoid R) {S : Type*} [CommRing S]
-variable [Algebra R S] {P : Type _} [CommRing P]
+variable [Algebra R S] {P : Type*} [CommRing P]
open Function BigOperators
@@ -32,7 +32,7 @@ namespace IsLocalization
section LocalizationLocalization
-variable (N : Submonoid S) (T : Type _) [CommRing T] [Algebra R T]
+variable (N : Submonoid S) (T : Type*) [CommRing T] [Algebra R T]
section
@@ -271,7 +271,7 @@ namespace IsFractionRing
open IsLocalization
-theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T] [Algebra R S]
+theorem isFractionRing_of_isLocalization (S T : Type*) [CommRing S] [CommRing T] [Algebra R S]
[Algebra R T] [Algebra S T] [IsScalarTower R S T] [IsLocalization M S] [IsFractionRing R T]
(hM : M ≤ nonZeroDivisors R) : IsFractionRing S T := by
have := isLocalization_of_submonoid_le S T M (nonZeroDivisors R) hM
@@ -290,7 +290,7 @@ theorem isFractionRing_of_isLocalization (S T : Type _) [CommRing S] [CommRing T
MulZeroClass.zero_mul]
#align is_fraction_ring.is_fraction_ring_of_is_localization IsFractionRing.isFractionRing_of_isLocalization
-theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type _) [CommRing S]
+theorem isFractionRing_of_isDomain_of_isLocalization [IsDomain R] (S T : Type*) [CommRing S]
[CommRing T] [Algebra R S] [Algebra R T] [Algebra S T] [IsScalarTower R S T]
[IsLocalization M S] [IsFractionRing R T] : IsFractionRing S T := by
haveI := IsFractionRing.nontrivial R T
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Mario Carneiro, Johan Commelin, Amelia Livingston, Anne Baanen
-
-! This file was ported from Lean 3 source module ring_theory.localization.localization_localization
-! leanprover-community/mathlib commit 831c494092374cfe9f50591ed0ac81a25efc5b86
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.RingTheory.Localization.AtPrime
import Mathlib.RingTheory.Localization.Basic
import Mathlib.RingTheory.Localization.FractionRing
+#align_import ring_theory.localization.localization_localization from "leanprover-community/mathlib"@"831c494092374cfe9f50591ed0ac81a25efc5b86"
+
/-!
# Localizations of localizations
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -221,7 +221,7 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
obtain ⟨⟨y₁, s₁⟩, e₁⟩ := IsLocalization.surj M x₁
obtain ⟨⟨y₂, s₂⟩, e₂⟩ := IsLocalization.surj M x₂
refine' Iff.trans _ (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).symm
- dsimp only at e₁ e₂⊢
+ dsimp only at e₁ e₂ ⊢
suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) ↔
∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁))
· have h₁ := @IsUnit.mul_left_inj T _ _ (algebraMap S T x₁) (algebraMap S T x₂)
@@ -55,7 +55,7 @@ variable {M N}
@[simp]
theorem mem_localizationLocalizationSubmodule {x : R} :
x ∈ localizationLocalizationSubmodule M N ↔
- ∃ (y : N)(z : M), algebraMap R S x = y * algebraMap R S z := by
+ ∃ (y : N) (z : M), algebraMap R S x = y * algebraMap R S z := by
rw [localizationLocalizationSubmodule, Submonoid.mem_comap, Submonoid.mem_sup]
constructor
· rintro ⟨y, hy, _, ⟨z, hz, rfl⟩, e⟩
@@ -29,9 +29,7 @@ variable {R : Type _} [CommRing R] (M : Submonoid R) {S : Type _} [CommRing S]
variable [Algebra R S] {P : Type _} [CommRing P]
-open Function
-
-open BigOperators
+open Function BigOperators
namespace IsLocalization
@@ -45,7 +43,7 @@ variable [Algebra S T] [IsScalarTower R S T]
-- This should only be defined when `S` is the localization `M⁻¹R`, hence the nolint.
/-- Localizing wrt `M ⊆ R` and then wrt `N ⊆ S = M⁻¹R` is equal to the localization of `R` wrt this
-module. See `localization_localization_is_localization`.
+module. See `localization_localization_isLocalization`.
-/
@[nolint unusedArguments]
def localizationLocalizationSubmodule : Submonoid R :=
@@ -103,7 +101,6 @@ theorem localization_localization_eq_iff_exists [IsLocalization N T] (x y : R) :
· rintro ⟨z, eq₁⟩
rcases IsLocalization.surj M (z : S) with ⟨⟨z', s⟩, eq₂⟩
dsimp only at eq₂
- let _a := (x * z' : R)
suffices : (algebraMap R S) (x * z' : R) = (algebraMap R S) (y * z')
· obtain ⟨c, eq₃ : ↑c * (x * z') = ↑c * (y * z')⟩ := (IsLocalization.eq_iff_exists M S).mp this
refine ⟨⟨c * z', ?_⟩, ?_⟩
@@ -225,7 +222,7 @@ theorem isLocalization_of_submonoid_le (M N : Submonoid R) (h : M ≤ N) [IsLoca
obtain ⟨⟨y₂, s₂⟩, e₂⟩ := IsLocalization.surj M x₂
refine' Iff.trans _ (Set.exists_image_iff (algebraMap R S) N fun c => c * x₁ = c * x₂).symm
dsimp only at e₁ e₂⊢
- suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) ↔
+ suffices : algebraMap R T (y₁ * s₂) = algebraMap R T (y₂ * s₁) ↔
∃ a : N, algebraMap R S (a * (y₁ * s₂)) = algebraMap R S (a * (y₂ * s₁))
· have h₁ := @IsUnit.mul_left_inj T _ _ (algebraMap S T x₁) (algebraMap S T x₂)
(IsLocalization.map_units T ⟨(s₁ : R), h s₁.prop⟩)
The unported dependencies are