ring_theory.ore_localization.basic
⟷
Mathlib.RingTheory.OreLocalization.Basic
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer, Kevin Klinge
-/
import GroupTheory.MonoidLocalization
-import RingTheory.NonZeroDivisors
+import Algebra.GroupWithZero.NonZeroDivisors
import RingTheory.OreLocalization.OreSet
import Tactic.NoncommRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -236,8 +236,8 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
lift₂Expand mul' fun r₂ p s₂ hp r₁ r s₁ hr =>
by
have h₁ := ore_eq r₁ s₂; set r₁' := ore_num r₁ s₂; set s₂' := ore_denom r₁ s₂
- rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩; dsimp at h₂
- rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩; simp only [S.coe_mul] at h₃
+ rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩; dsimp at h₂
+ rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩; simp only [S.coe_mul] at h₃
have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) := by
rw [← mul_assoc, ← h₂, ← h₁, mul_assoc, h₃]; simp only [mul_assoc]
rw [mul'_char (r₂ * p) (r₁ * r) ⟨↑s₂ * p, hp⟩ ⟨↑s₁ * r, hr⟩ _ _ this]; clear this
@@ -521,9 +521,9 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
eq_iff_exists' r₁ r₂ := by
dsimp; constructor
· intro h
- rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
- rcases h with ⟨u, v, h₁, h₂⟩; dsimp at h₂
- rw [one_mul, one_mul] at h₂
+ rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
+ rcases h with ⟨u, v, h₁, h₂⟩; dsimp at h₂
+ rw [one_mul, one_mul] at h₂
subst h₂
use u
simpa only [mul_comm] using h₁.symm
@@ -684,7 +684,7 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
repeat' rw [← add_ore_div]
congr 1
· rcases ore_condition (sd : R) (sa * sc) with ⟨re, se, he⟩
- · simp_rw [← Submonoid.coe_mul] at hb hc hd
+ · simp_rw [← Submonoid.coe_mul] at hb hc hd
assoc_rw [Subtype.coe_eq_of_eq_mk hc]
rw [← OreLocalization.expand, Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ←
OreLocalization.expand, Subtype.coe_eq_of_eq_mk hb]
@@ -693,7 +693,7 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
·
rw [← OreLocalization.expand', ← mul_assoc, ← mul_assoc, ← OreLocalization.expand', ←
OreLocalization.expand']
- · simp_rw [← Submonoid.coe_mul] at ha hd
+ · simp_rw [← Submonoid.coe_mul] at ha hd
rw [Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ← mul_assoc, ← mul_assoc, ← OreLocalization.expand,
← OreLocalization.expand', Subtype.coe_eq_of_eq_mk ha, ← OreLocalization.expand]
apply OreLocalization.expand'
@@ -791,7 +791,7 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
induction' z using OreLocalization.ind with r₃ s₃
- rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
+ rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
rw [OreLocalization.expand' r₁ s₁ sa]
rw [OreLocalization.expand r₂ s₂ ra (by rw [← ha] <;> apply SetLike.coe_mem)]
rw [← Subtype.coe_eq_of_eq_mk ha]
@@ -837,7 +837,7 @@ def universalHom : R[S⁻¹] →+* T :=
rw [add_mul, ← mul_assoc, mul_assoc (f r₁), hf, ← Units.val_mul]
simp only [mul_one, mul_right_inv, Units.val_one]
congr 1; rw [mul_assoc]; congr 1
- norm_cast at h₃ ; have h₃' := Subtype.coe_eq_of_eq_mk h₃
+ norm_cast at h₃; have h₃' := Subtype.coe_eq_of_eq_mk h₃
rw [← Units.val_mul, ← mul_inv_rev, ← fS.map_mul, h₃']
have hs₂r₃ : ↑s₂ * r₃ ∈ S := by rw [← h₃]; exact SetLike.coe_mem (s₁ * s₃)
apply (Units.inv_mul_cancel_left (fS s₂) _).symm.trans
@@ -920,17 +920,17 @@ open scoped nonZeroDivisors
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
by
- rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
+ rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
rcases h with ⟨u, v, h₁, h₂⟩
- simp only [S.coe_one, one_mul] at h₂
- rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
+ simp only [S.coe_one, one_mul] at h₂
+ rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_inj
-/
#print OreLocalization.nontrivial_of_nonZeroDivisors /-
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
⟨⟨0, 1, fun h => by
- rw [OreLocalization.one_def, OreLocalization.zero_def] at h
+ rw [OreLocalization.one_def, OreLocalization.zero_def] at h
apply nonZeroDivisors.coe_ne_zero 1 (numerator_hom_inj hS h).symm⟩⟩
#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisors
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2022 Jakob von Raumer. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer, Kevin Klinge
-/
-import Mathbin.GroupTheory.MonoidLocalization
-import Mathbin.RingTheory.NonZeroDivisors
-import Mathbin.RingTheory.OreLocalization.OreSet
-import Mathbin.Tactic.NoncommRing
+import GroupTheory.MonoidLocalization
+import RingTheory.NonZeroDivisors
+import RingTheory.OreLocalization.OreSet
+import Tactic.NoncommRing
#align_import ring_theory.ore_localization.basic from "leanprover-community/mathlib"@"b6da1a0b3e7cd83b1f744c49ce48ef8c6307d2f6"
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -516,7 +516,7 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
map_units' := numerator_isUnit
surj' z := by
induction' z using OreLocalization.ind with r s
- use (r, s); dsimp
+ use(r, s); dsimp
rw [numerator_hom_apply, numerator_hom_apply]; simp
eq_iff_exists' r₁ r₂ := by
dsimp; constructor
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2022 Jakob von Raumer. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer, Kevin Klinge
-
-! This file was ported from Lean 3 source module ring_theory.ore_localization.basic
-! leanprover-community/mathlib commit b6da1a0b3e7cd83b1f744c49ce48ef8c6307d2f6
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.GroupTheory.MonoidLocalization
import Mathbin.RingTheory.NonZeroDivisors
import Mathbin.RingTheory.OreLocalization.OreSet
import Mathbin.Tactic.NoncommRing
+#align_import ring_theory.ore_localization.basic from "leanprover-community/mathlib"@"b6da1a0b3e7cd83b1f744c49ce48ef8c6307d2f6"
+
/-!
# Localization over right Ore sets.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -52,6 +52,7 @@ namespace OreLocalization
variable (R : Type _) [Monoid R] (S : Submonoid R) [OreSet S]
+#print OreLocalization.oreEqv /-
/-- The setoid on `R × S` used for the Ore localization. -/
def oreEqv : Setoid (R × S)
where
@@ -74,6 +75,7 @@ def oreEqv : Setoid (R × S)
· assoc_rw [hur₂, h, hur₁, mul_assoc]
· assoc_rw [hs₂u, h, hs₁u, mul_assoc]
#align ore_localization.ore_eqv OreLocalization.oreEqv
+-/
end OreLocalization
@@ -92,42 +94,51 @@ variable {R : Type _} [Monoid R] {S : Submonoid R}
variable (R S) [OreSet S]
--- mathport name: «expr [ ⁻¹]»
notation:1075 R "[" S "⁻¹]" => OreLocalization R S
attribute [local instance] ore_eqv
variable {R S}
+#print OreLocalization.oreDiv /-
/-- The division in the ore localization `R[S⁻¹]`, as a fraction of an element of `R` and `S`. -/
def oreDiv (r : R) (s : S) : R[S⁻¹] :=
Quotient.mk' (r, s)
#align ore_localization.ore_div OreLocalization.oreDiv
+-/
--- mathport name: «expr /ₒ »
infixl:70 " /ₒ " => oreDiv
+#print OreLocalization.ind /-
@[elab_as_elim]
protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r /ₒ s)) : ∀ q, β q := by
apply Quotient.ind; rintro ⟨r, s⟩; exact c r s
#align ore_localization.ind OreLocalization.ind
+-/
+#print OreLocalization.oreDiv_eq_iff /-
theorem oreDiv_eq_iff {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S) (v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
Quotient.eq''
#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iff
+-/
+#print OreLocalization.expand /-
/-- A fraction `r /ₒ s` is equal to its expansion by an arbitrary factor `t` if `s * t ∈ S`. -/
protected theorem expand (r : R) (s : S) (t : R) (hst : (s : R) * t ∈ S) :
r /ₒ s = r * t /ₒ ⟨s * t, hst⟩ := by apply Quotient.sound;
refine' ⟨s, t * s, _, _⟩ <;> dsimp <;> rw [mul_assoc] <;> rfl
#align ore_localization.expand OreLocalization.expand
+-/
+#print OreLocalization.expand' /-
/-- A fraction is equal to its expansion by an factor from s. -/
protected theorem expand' (r : R) (s s' : S) : r /ₒ s = r * s' /ₒ (s * s') :=
OreLocalization.expand r s s' (by norm_cast <;> apply SetLike.coe_mem)
#align ore_localization.expand' OreLocalization.expand'
+-/
+#print OreLocalization.eq_of_num_factor_eq /-
/-- Fractions which differ by a factor of the numerator can be proven equal if
those factors expand to equal elements of `R`. -/
protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t = r' * t) :
@@ -145,7 +156,9 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
_ = r₁ * r' * r₂ * t' /ₒ (s * t') := by simp [← mul_assoc]
_ = r₁ * r' * r₂ /ₒ s := by symm <;> apply OreLocalization.expand
#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eq
+-/
+#print OreLocalization.liftExpand /-
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
under expansion on the right. -/
def liftExpand {C : Sort _} (P : R → S → C)
@@ -159,14 +172,18 @@ def liftExpand {C : Sort _} (P : R → S → C)
rw [hP r₁ v s₁ s₁vS, hP r₂ u s₂ (by norm_cast; rw [hs₂]; assumption), hr₂]
simpa [← hs₂]
#align ore_localization.lift_expand OreLocalization.liftExpand
+-/
+#print OreLocalization.liftExpand_of /-
@[simp]
theorem liftExpand_of {C : Sort _} {P : R → S → C}
{hP : ∀ (r t : R) (s : S) (ht : (s : R) * t ∈ S), P r s = P (r * t) ⟨s * t, ht⟩} (r : R)
(s : S) : liftExpand P hP (r /ₒ s) = P r s :=
rfl
#align ore_localization.lift_expand_of OreLocalization.liftExpand_of
+-/
+#print OreLocalization.lift₂Expand /-
/-- A version of `lift_expand` used to simultaneously lift functions with two arguments
in ``R[S⁻¹]`.-/
def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
@@ -182,7 +199,9 @@ def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
ext x; induction' x using OreLocalization.ind with r₂ s₂
rw [lift_expand_of, lift_expand_of, hP r₁ t₁ s₁ ht₁ r₂ 1 s₂ (by simp)]; simp
#align ore_localization.lift₂_expand OreLocalization.lift₂Expand
+-/
+#print OreLocalization.lift₂Expand_of /-
@[simp]
theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
{hP :
@@ -192,6 +211,7 @@ theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
(r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) : lift₂Expand P hP (r₁ /ₒ s₁) (r₂ /ₒ s₂) = P r₁ s₁ r₂ s₂ :=
rfl
#align ore_localization.lift₂_expand_of OreLocalization.lift₂Expand_of
+-/
private def mul' (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) : R[S⁻¹] :=
r₁ * oreNum r₂ s₁ /ₒ (s₂ * oreDenom r₂ s₁)
@@ -243,56 +263,72 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
instance : Mul R[S⁻¹] :=
⟨OreLocalization.mul⟩
+#print OreLocalization.oreDiv_mul_oreDiv /-
theorem oreDiv_mul_oreDiv {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * oreNum r₂ s₁ /ₒ (s₂ * oreDenom r₂ s₁) :=
rfl
#align ore_localization.ore_div_mul_ore_div OreLocalization.oreDiv_mul_oreDiv
+-/
+#print OreLocalization.oreDiv_mul_char /-
/-- A characterization lemma for the multiplication on the Ore localization, allowing for a choice
of Ore numerator and Ore denominator. -/
theorem oreDiv_mul_char (r₁ r₂ : R) (s₁ s₂ : S) (r' : R) (s' : S) (huv : r₂ * (s' : R) = s₁ * r') :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r' /ₒ (s₂ * s') :=
mul'_char r₁ r₂ s₁ s₂ s' r' huv
#align ore_localization.ore_div_mul_char OreLocalization.oreDiv_mul_char
+-/
+#print OreLocalization.oreDivMulChar' /-
/-- Another characterization lemma for the multiplication on the Ore localizaion delivering
Ore witnesses and conditions bundled in a sigma type. -/
def oreDivMulChar' (r₁ r₂ : R) (s₁ s₂ : S) :
Σ' r' : R, Σ' s' : S, r₂ * (s' : R) = s₁ * r' ∧ r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r' /ₒ (s₂ * s') :=
⟨oreNum r₂ s₁, oreDenom r₂ s₁, ore_eq r₂ s₁, oreDiv_mul_oreDiv⟩
#align ore_localization.ore_div_mul_char' OreLocalization.oreDivMulChar'
+-/
instance : One R[S⁻¹] :=
⟨1 /ₒ 1⟩
+#print OreLocalization.one_def /-
protected theorem one_def : (1 : R[S⁻¹]) = 1 /ₒ 1 :=
rfl
#align ore_localization.one_def OreLocalization.one_def
+-/
instance : Inhabited R[S⁻¹] :=
⟨1⟩
+#print OreLocalization.div_eq_one' /-
@[simp]
protected theorem div_eq_one' {r : R} (hr : r ∈ S) : r /ₒ ⟨r, hr⟩ = 1 := by
rw [OreLocalization.one_def, ore_div_eq_iff]; exact ⟨⟨r, hr⟩, 1, by simp, by simp⟩
#align ore_localization.div_eq_one' OreLocalization.div_eq_one'
+-/
+#print OreLocalization.div_eq_one /-
@[simp]
protected theorem div_eq_one {s : S} : (s : R) /ₒ s = 1 := by
cases s <;> apply OreLocalization.div_eq_one'
#align ore_localization.div_eq_one OreLocalization.div_eq_one
+-/
+#print OreLocalization.one_mul /-
protected theorem one_mul (x : R[S⁻¹]) : 1 * x = x :=
by
induction' x using OreLocalization.ind with r s
simp [OreLocalization.one_def, ore_div_mul_char (1 : R) r (1 : S) s r 1 (by simp)]
#align ore_localization.one_mul OreLocalization.one_mul
+-/
+#print OreLocalization.mul_one /-
protected theorem mul_one (x : R[S⁻¹]) : x * 1 = x :=
by
induction' x using OreLocalization.ind with r s
simp [OreLocalization.one_def, ore_div_mul_char r 1 s 1 1 s (by simp)]
#align ore_localization.mul_one OreLocalization.mul_one
+-/
#print OreLocalization.mul_assoc /-
protected theorem mul_assoc (x y z : R[S⁻¹]) : x * y * z = x * (y * z) :=
@@ -318,31 +354,42 @@ instance : Monoid R[S⁻¹] :=
mul_one := OreLocalization.mul_one
mul_assoc := OreLocalization.mul_assoc }
+#print OreLocalization.mul_inv /-
protected theorem mul_inv (s s' : S) : (s : R) /ₒ s' * (s' /ₒ s) = 1 := by
simp [ore_div_mul_char (s : R) s' s' s 1 1 (by simp)]
#align ore_localization.mul_inv OreLocalization.mul_inv
+-/
+#print OreLocalization.mul_one_div /-
@[simp]
protected theorem mul_one_div {r : R} {s t : S} : r /ₒ s * (1 /ₒ t) = r /ₒ (t * s) := by
simp [ore_div_mul_char r 1 s t 1 s (by simp)]
#align ore_localization.mul_one_div OreLocalization.mul_one_div
+-/
+#print OreLocalization.mul_cancel /-
@[simp]
protected theorem mul_cancel {r : R} {s t : S} : r /ₒ s * (s /ₒ t) = r /ₒ t := by
simp [ore_div_mul_char r s s t 1 1 (by simp)]
#align ore_localization.mul_cancel OreLocalization.mul_cancel
+-/
+#print OreLocalization.mul_cancel' /-
@[simp]
protected theorem mul_cancel' {r₁ r₂ : R} {s t : S} : r₁ /ₒ s * (s * r₂ /ₒ t) = r₁ * r₂ /ₒ t := by
simp [ore_div_mul_char r₁ (s * r₂) s t r₂ 1 (by simp)]
#align ore_localization.mul_cancel' OreLocalization.mul_cancel'
+-/
+#print OreLocalization.div_one_mul /-
@[simp]
theorem div_one_mul {p r : R} {s : S} : r /ₒ 1 * (p /ₒ s) = r * p /ₒ s :=
by--TODO use coercion r ↦ r /ₒ 1
simp [ore_div_mul_char r p 1 s p 1 (by simp)]
#align ore_localization.div_one_mul OreLocalization.div_one_mul
+-/
+#print OreLocalization.numeratorUnit /-
/-- The fraction `s /ₒ 1` as a unit in `R[S⁻¹]`, where `s : S`. -/
def numeratorUnit (s : S) : Units R[S⁻¹]
where
@@ -351,7 +398,9 @@ def numeratorUnit (s : S) : Units R[S⁻¹]
val_inv := OreLocalization.mul_inv s 1
inv_val := OreLocalization.mul_inv 1 s
#align ore_localization.numerator_unit OreLocalization.numeratorUnit
+-/
+#print OreLocalization.numeratorHom /-
/-- The multiplicative homomorphism from `R` to `R[S⁻¹]`, mapping `r : R` to the
fraction `r /ₒ 1`. -/
def numeratorHom : R →* R[S⁻¹] where
@@ -359,14 +408,19 @@ def numeratorHom : R →* R[S⁻¹] where
map_one' := rfl
map_mul' r₁ r₂ := div_one_mul.symm
#align ore_localization.numerator_hom OreLocalization.numeratorHom
+-/
+#print OreLocalization.numeratorHom_apply /-
theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
rfl
#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_apply
+-/
+#print OreLocalization.numerator_isUnit /-
theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
⟨numeratorUnit s, rfl⟩
#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnit
+-/
section UMP
@@ -376,8 +430,7 @@ variable (f : R →* T) (fS : S →* Units T)
variable (hf : ∀ s : S, f s = fS s)
-include f fS hf
-
+#print OreLocalization.universalMulHom /-
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
def universalMulHom : R[S⁻¹] →* T
@@ -406,16 +459,22 @@ def universalMulHom : R[S⁻¹] →* T
f.map_mul, mul_assoc, fS.map_mul, ← Units.val_mul]
rfl
#align ore_localization.universal_mul_hom OreLocalization.universalMulHom
+-/
+#print OreLocalization.universalMulHom_apply /-
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
rfl
#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_apply
+-/
+#print OreLocalization.universalMulHom_commutes /-
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutes
+-/
+#print OreLocalization.universalMulHom_unique /-
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalMulHom f fS hf := by
@@ -424,6 +483,7 @@ theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (n
Units.val_one, ← mul_right_inv (fS s), Units.val_mul, ← mul_assoc, ← hf, ← huniv, ← φ.map_mul,
numerator_hom_apply, OreLocalization.mul_cancel]
#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_unique
+-/
end UMP
@@ -433,10 +493,12 @@ section CommMonoid
variable {R : Type _} [CommMonoid R] {S : Submonoid R} [OreSet S]
+#print OreLocalization.oreDiv_mul_oreDiv_comm /-
theorem oreDiv_mul_oreDiv_comm {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r₂ /ₒ (s₁ * s₂) := by
rw [ore_div_mul_char r₁ r₂ s₁ s₂ r₂ s₁ (by simp [mul_comm]), mul_comm s₂]
#align ore_localization.ore_div_mul_ore_div_comm OreLocalization.oreDiv_mul_oreDiv_comm
+-/
instance : CommMonoid R[S⁻¹] :=
{ OreLocalization.monoid with
@@ -447,6 +509,7 @@ instance : CommMonoid R[S⁻¹] :=
variable (R S)
+#print OreLocalization.localizationMap /-
/-- The morphism `numerator_hom` is a monoid localization map in the case of commutative `R`. -/
protected def localizationMap : S.LocalizationMap R[S⁻¹]
where
@@ -473,6 +536,7 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
· simpa [mul_comm] using h.symm
· simp [one_mul]
#align ore_localization.localization_map OreLocalization.localizationMap
+-/
#print OreLocalization.equivMonoidLocalization /-
/-- If `R` is commutative, Ore localization and monoid localization are isomorphic. -/
@@ -575,18 +639,23 @@ private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
instance : Add R[S⁻¹] :=
⟨add⟩
+#print OreLocalization.oreDiv_add_oreDiv /-
theorem oreDiv_add_oreDiv {r r' : R} {s s' : S} :
r /ₒ s + r' /ₒ s' = (r * oreDenom (s : R) s' + r' * oreNum s s') /ₒ (s * oreDenom s s') :=
rfl
#align ore_localization.ore_div_add_ore_div OreLocalization.oreDiv_add_oreDiv
+-/
+#print OreLocalization.oreDiv_add_char /-
/-- A characterization of the addition on the Ore localizaion, allowing for arbitrary Ore
numerator and Ore denominator. -/
theorem oreDiv_add_char {r r' : R} (s s' : S) (rb : R) (sb : S) (h : (s : R) * sb = s' * rb) :
r /ₒ s + r' /ₒ s' = (r * sb + r' * rb) /ₒ (s * sb) :=
add''_char r s r' s' rb sb h
#align ore_localization.ore_div_add_char OreLocalization.oreDiv_add_char
+-/
+#print OreLocalization.oreDivAddChar' /-
/-- Another characterization of the addition on the Ore localization, bundling up all witnesses
and conditions into a sigma type. -/
def oreDivAddChar' (r r' : R) (s s' : S) :
@@ -595,12 +664,16 @@ def oreDivAddChar' (r r' : R) (s s' : S) :
(s : R) * s'' = s' * r'' ∧ r /ₒ s + r' /ₒ s' = (r * s'' + r' * r'') /ₒ (s * s'') :=
⟨oreNum s s', oreDenom s s', ore_eq s s', oreDiv_add_oreDiv⟩
#align ore_localization.ore_div_add_char' OreLocalization.oreDivAddChar'
+-/
+#print OreLocalization.add_oreDiv /-
@[simp]
theorem add_oreDiv {r r' : R} {s : S} : r /ₒ s + r' /ₒ s = (r + r') /ₒ s := by
simp [ore_div_add_char s s 1 1 (by simp)]
#align ore_localization.add_ore_div OreLocalization.add_oreDiv
+-/
+#print OreLocalization.add_assoc /-
protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -628,6 +701,7 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
← OreLocalization.expand', Subtype.coe_eq_of_eq_mk ha, ← OreLocalization.expand]
apply OreLocalization.expand'
#align ore_localization.add_assoc OreLocalization.add_assoc
+-/
private def zero : R[S⁻¹] :=
0 /ₒ 1
@@ -635,27 +709,35 @@ private def zero : R[S⁻¹] :=
instance : Zero R[S⁻¹] :=
⟨zero⟩
+#print OreLocalization.zero_def /-
protected theorem zero_def : (0 : R[S⁻¹]) = 0 /ₒ 1 :=
rfl
#align ore_localization.zero_def OreLocalization.zero_def
+-/
+#print OreLocalization.zero_div_eq_zero /-
@[simp]
theorem zero_div_eq_zero (s : S) : 0 /ₒ s = 0 := by rw [OreLocalization.zero_def, ore_div_eq_iff];
exact ⟨s, 1, by simp⟩
#align ore_localization.zero_div_eq_zero OreLocalization.zero_div_eq_zero
+-/
+#print OreLocalization.zero_add /-
protected theorem zero_add (x : R[S⁻¹]) : 0 + x = x :=
by
induction x using OreLocalization.ind
rw [← zero_div_eq_zero, add_ore_div]; simp
#align ore_localization.zero_add OreLocalization.zero_add
+-/
+#print OreLocalization.add_comm /-
protected theorem add_comm (x y : R[S⁻¹]) : x + y = y + x :=
by
induction x using OreLocalization.ind
induction y using OreLocalization.ind
change add' _ _ (_ /ₒ _) = _; apply add'_comm
#align ore_localization.add_comm OreLocalization.add_comm
+-/
instance : AddCommMonoid R[S⁻¹] :=
{ OreLocalization.hasAdd with
@@ -665,18 +747,23 @@ instance : AddCommMonoid R[S⁻¹] :=
zero_add := OreLocalization.zero_add
add_zero := fun x => by rw [OreLocalization.add_comm, OreLocalization.zero_add] }
+#print OreLocalization.zero_mul /-
protected theorem zero_mul (x : R[S⁻¹]) : 0 * x = 0 :=
by
induction' x using OreLocalization.ind with r s
rw [OreLocalization.zero_def, ore_div_mul_char 0 r 1 s r 1 (by simp)]; simp
#align ore_localization.zero_mul OreLocalization.zero_mul
+-/
+#print OreLocalization.mul_zero /-
protected theorem mul_zero (x : R[S⁻¹]) : x * 0 = 0 :=
by
induction' x using OreLocalization.ind with r s
rw [OreLocalization.zero_def, ore_div_mul_char r 0 s 1 0 1 (by simp)]; simp
#align ore_localization.mul_zero OreLocalization.mul_zero
+-/
+#print OreLocalization.left_distrib /-
protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -699,7 +786,9 @@ protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z
rw [add_mul, S.coe_mul, ← mul_assoc, hb, ← mul_assoc, mul_assoc r₃, hc, mul_assoc, ← mul_add]
rw [OreLocalization.mul_cancel']; simp only [mul_one, Submonoid.coe_mul, mul_add, ← mul_assoc]
#align ore_localization.left_distrib OreLocalization.left_distrib
+-/
+#print OreLocalization.right_distrib /-
theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -711,6 +800,7 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
rw [← Subtype.coe_eq_of_eq_mk ha]
repeat' rw [ore_div_mul_ore_div]; simp only [add_mul, add_ore_div]
#align ore_localization.right_distrib OreLocalization.right_distrib
+-/
instance : Semiring R[S⁻¹] :=
{ OreLocalization.addCommMonoid,
@@ -728,8 +818,7 @@ variable (f : R →+* T) (fS : S →* Units T)
variable (hf : ∀ s : S, f s = fS s)
-include f fS hf
-
+#print OreLocalization.universalHom /-
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
monoids. -/
@@ -770,20 +859,27 @@ def universalHom : R[S⁻¹] →+* T :=
rw [hf, ← mul_assoc, ← h₃', Units.inv_mul]
rw [one_mul, ← h₃', Units.mul_inv, mul_one] }
#align ore_localization.universal_hom OreLocalization.universalHom
+-/
+#print OreLocalization.universalHom_apply /-
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
rfl
#align ore_localization.universal_hom_apply OreLocalization.universalHom_apply
+-/
+#print OreLocalization.universalHom_commutes /-
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutes
+-/
+#print OreLocalization.universalHom_unique /-
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
RingHom.coe_monoidHom_injective <| universalMulHom_unique (RingHom.toMonoidHom f) fS hf (↑φ) huniv
#align ore_localization.universal_hom_unique OreLocalization.universalHom_unique
+-/
end UMP
@@ -793,23 +889,29 @@ section Ring
variable {R : Type _} [Ring R] {S : Submonoid R} [OreSet S]
+#print OreLocalization.neg /-
/-- Negation on the Ore localization is defined via negation on the numerator. -/
protected def neg : R[S⁻¹] → R[S⁻¹] :=
liftExpand (fun (r : R) (s : S) => -r /ₒ s) fun r t s ht => by
rw [neg_mul_eq_neg_mul, ← OreLocalization.expand]
#align ore_localization.neg OreLocalization.neg
+-/
instance : Neg R[S⁻¹] :=
⟨OreLocalization.neg⟩
+#print OreLocalization.neg_def /-
@[simp]
protected theorem neg_def (r : R) (s : S) : -(r /ₒ s) = -r /ₒ s :=
rfl
#align ore_localization.neg_def OreLocalization.neg_def
+-/
+#print OreLocalization.add_left_neg /-
protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
induction' x using OreLocalization.ind with r s <;> simp
#align ore_localization.add_left_neg OreLocalization.add_left_neg
+-/
instance : Ring R[S⁻¹] :=
{ OreLocalization.semiring, OreLocalization.hasNeg with
@@ -817,6 +919,7 @@ instance : Ring R[S⁻¹] :=
open scoped nonZeroDivisors
+#print OreLocalization.numeratorHom_inj /-
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
by
@@ -825,12 +928,15 @@ theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom :
simp only [S.coe_one, one_mul] at h₂
rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_inj
+-/
+#print OreLocalization.nontrivial_of_nonZeroDivisors /-
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
⟨⟨0, 1, fun h => by
rw [OreLocalization.one_def, OreLocalization.zero_def] at h
apply nonZeroDivisors.coe_ne_zero 1 (numerator_hom_inj hS h).symm⟩⟩
#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisors
+-/
end Ring
@@ -849,6 +955,7 @@ variable [NoZeroDivisors R]
noncomputable section
+#print OreLocalization.inv /-
/-- The inversion of Ore fractions for a ring without zero divisors, satisying `0⁻¹ = 0` and
`(r /ₒ r')⁻¹ = r' /ₒ r` for `r ≠ 0`. -/
protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
@@ -865,17 +972,21 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
· simp only [hr, ht, SetLike.coe_mk, dif_neg, not_false_iff, or_self_iff, mul_eq_zero]
apply OreLocalization.expand)
#align ore_localization.inv OreLocalization.inv
+-/
instance : Inv R[R⁰⁻¹] :=
⟨OreLocalization.inv⟩
+#print OreLocalization.inv_def /-
protected theorem inv_def {r : R} {s : R⁰} :
(r /ₒ s)⁻¹ =
if hr : r = (0 : R) then (0 : R[R⁰⁻¹])
else s /ₒ ⟨r, fun _ => eq_zero_of_ne_zero_of_mul_right_eq_zero hr⟩ :=
rfl
#align ore_localization.inv_def OreLocalization.inv_def
+-/
+#print OreLocalization.mul_inv_cancel /-
protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ = 1 :=
by
induction' x using OreLocalization.ind with r s
@@ -884,10 +995,13 @@ protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ =
· exfalso; apply h; simp [hr]
· simp [hr]; apply OreLocalization.div_eq_one'
#align ore_localization.mul_inv_cancel OreLocalization.mul_inv_cancel
+-/
+#print OreLocalization.inv_zero /-
protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
rw [OreLocalization.zero_def, OreLocalization.inv_def]; simp
#align ore_localization.inv_zero OreLocalization.inv_zero
+-/
instance : DivisionRing R[R⁰⁻¹] :=
{ OreLocalization.nontrivial, OreLocalization.hasInv,
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -144,7 +144,6 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
_ = r₁ * r' * (r₂ * t') /ₒ (s * t') := by rw [hr₂]
_ = r₁ * r' * r₂ * t' /ₒ (s * t') := by simp [← mul_assoc]
_ = r₁ * r' * r₂ /ₒ s := by symm <;> apply OreLocalization.expand
-
#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eq
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
@@ -208,7 +207,6 @@ private theorem mul'_char (r₁ r₂ : R) (s₁ s₂ : S) (u : S) (v : R) (huv :
(s₁ : R) * (v * r₃) = r₂ * u * r₃ := by assoc_rw [← huv] <;> symm <;> apply mul_assoc
_ = r₂ * u₀ * s₃ := by assoc_rw [← h₃] <;> rfl
_ = s₁ * (v₀ * s₃) := by assoc_rw [h₀] <;> apply mul_assoc
-
rcases ore_left_cancel _ _ _ this with ⟨s₄, hs₄⟩
symm; rw [ore_div_eq_iff]
use s₃ * s₄; use r₃ * s₄; simp only [Submonoid.coe_mul]; constructor
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -237,7 +237,7 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
rw [this]; clear this
rcases ore_left_cancel (p * p') (r₁' * ↑s_star) s₂ (by simp [← mul_assoc, h₂]) with ⟨s₂'', h₂''⟩
rw [← mul_assoc, mul_assoc r₂, OreLocalization.eq_of_num_factor_eq h₂'']
- norm_cast at hsssp ⊢; rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
+ norm_cast at hsssp ⊢; rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
apply OreLocalization.expand
#align ore_localization.mul OreLocalization.mul
-/
@@ -707,8 +707,7 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
induction' z using OreLocalization.ind with r₃ s₃
- rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha';
- norm_cast at ha
+ rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
rw [OreLocalization.expand' r₁ s₁ sa]
rw [OreLocalization.expand r₂ s₂ ra (by rw [← ha] <;> apply SetLike.coe_mem)]
rw [← Subtype.coe_eq_of_eq_mk ha]
@@ -754,7 +753,7 @@ def universalHom : R[S⁻¹] →+* T :=
rw [add_mul, ← mul_assoc, mul_assoc (f r₁), hf, ← Units.val_mul]
simp only [mul_one, mul_right_inv, Units.val_one]
congr 1; rw [mul_assoc]; congr 1
- norm_cast at h₃ ; have h₃' := Subtype.coe_eq_of_eq_mk h₃
+ norm_cast at h₃ ; have h₃' := Subtype.coe_eq_of_eq_mk h₃
rw [← Units.val_mul, ← mul_inv_rev, ← fS.map_mul, h₃']
have hs₂r₃ : ↑s₂ * r₃ ∈ S := by rw [← h₃]; exact SetLike.coe_mem (s₁ * s₃)
apply (Units.inv_mul_cancel_left (fS s₂) _).symm.trans
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -55,7 +55,7 @@ variable (R : Type _) [Monoid R] (S : Submonoid R) [OreSet S]
/-- The setoid on `R × S` used for the Ore localization. -/
def oreEqv : Setoid (R × S)
where
- R rs rs' := ∃ (u : S)(v : R), rs'.1 * u = rs.1 * v ∧ (rs'.2 : R) * u = rs.2 * v
+ R rs rs' := ∃ (u : S) (v : R), rs'.1 * u = rs.1 * v ∧ (rs'.2 : R) * u = rs.2 * v
iseqv := by
refine' ⟨_, _, _⟩
· rintro ⟨r, s⟩; use 1; use 1; simp [Submonoid.one_mem]
@@ -113,7 +113,7 @@ protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r
#align ore_localization.ind OreLocalization.ind
theorem oreDiv_eq_iff {r₁ r₂ : R} {s₁ s₂ : S} :
- r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S)(v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
+ r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S) (v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
Quotient.eq''
#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iff
@@ -221,8 +221,8 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
lift₂Expand mul' fun r₂ p s₂ hp r₁ r s₁ hr =>
by
have h₁ := ore_eq r₁ s₂; set r₁' := ore_num r₁ s₂; set s₂' := ore_denom r₁ s₂
- rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩; dsimp at h₂
- rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩; simp only [S.coe_mul] at h₃
+ rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩; dsimp at h₂
+ rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩; simp only [S.coe_mul] at h₃
have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) := by
rw [← mul_assoc, ← h₂, ← h₁, mul_assoc, h₃]; simp only [mul_assoc]
rw [mul'_char (r₂ * p) (r₁ * r) ⟨↑s₂ * p, hp⟩ ⟨↑s₁ * r, hr⟩ _ _ this]; clear this
@@ -237,7 +237,7 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
rw [this]; clear this
rcases ore_left_cancel (p * p') (r₁' * ↑s_star) s₂ (by simp [← mul_assoc, h₂]) with ⟨s₂'', h₂''⟩
rw [← mul_assoc, mul_assoc r₂, OreLocalization.eq_of_num_factor_eq h₂'']
- norm_cast at hsssp⊢; rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
+ norm_cast at hsssp ⊢; rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
apply OreLocalization.expand
#align ore_localization.mul OreLocalization.mul
-/
@@ -260,7 +260,7 @@ theorem oreDiv_mul_char (r₁ r₂ : R) (s₁ s₂ : S) (r' : R) (s' : S) (huv :
/-- Another characterization lemma for the multiplication on the Ore localizaion delivering
Ore witnesses and conditions bundled in a sigma type. -/
def oreDivMulChar' (r₁ r₂ : R) (s₁ s₂ : S) :
- Σ'r' : R, Σ's' : S, r₂ * (s' : R) = s₁ * r' ∧ r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r' /ₒ (s₂ * s') :=
+ Σ' r' : R, Σ' s' : S, r₂ * (s' : R) = s₁ * r' ∧ r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r' /ₒ (s₂ * s') :=
⟨oreNum r₂ s₁, oreDenom r₂ s₁, ore_eq r₂ s₁, oreDiv_mul_oreDiv⟩
#align ore_localization.ore_div_mul_char' OreLocalization.oreDivMulChar'
@@ -463,9 +463,9 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
eq_iff_exists' r₁ r₂ := by
dsimp; constructor
· intro h
- rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
- rcases h with ⟨u, v, h₁, h₂⟩; dsimp at h₂
- rw [one_mul, one_mul] at h₂
+ rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
+ rcases h with ⟨u, v, h₁, h₂⟩; dsimp at h₂
+ rw [one_mul, one_mul] at h₂
subst h₂
use u
simpa only [mul_comm] using h₁.symm
@@ -537,7 +537,7 @@ private def add' (r₂ : R) (s₂ : S) : R[S⁻¹] → R[S⁻¹] :=
rw [← mul_assoc, ← add_mul, ore_div_eq_iff]
use 1; use rd; constructor
· simp
- · simp only [mul_one, Submonoid.coe_one, Submonoid.coe_mul] at this⊢; assoc_rw [hc, this]
+ · simp only [mul_one, Submonoid.coe_one, Submonoid.coe_mul] at this ⊢; assoc_rw [hc, this]
private theorem add'_comm (r₁ r₂ : R) (s₁ s₂ : S) : add' r₁ s₁ (r₂ /ₒ s₂) = add' r₂ s₂ (r₁ /ₒ s₁) :=
by
@@ -592,8 +592,9 @@ theorem oreDiv_add_char {r r' : R} (s s' : S) (rb : R) (sb : S) (h : (s : R) * s
/-- Another characterization of the addition on the Ore localization, bundling up all witnesses
and conditions into a sigma type. -/
def oreDivAddChar' (r r' : R) (s s' : S) :
- Σ'r'' : R,
- Σ's'' : S, (s : R) * s'' = s' * r'' ∧ r /ₒ s + r' /ₒ s' = (r * s'' + r' * r'') /ₒ (s * s'') :=
+ Σ' r'' : R,
+ Σ' s'' : S,
+ (s : R) * s'' = s' * r'' ∧ r /ₒ s + r' /ₒ s' = (r * s'' + r' * r'') /ₒ (s * s'') :=
⟨oreNum s s', oreDenom s s', ore_eq s s', oreDiv_add_oreDiv⟩
#align ore_localization.ore_div_add_char' OreLocalization.oreDivAddChar'
@@ -615,7 +616,7 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
repeat' rw [← add_ore_div]
congr 1
· rcases ore_condition (sd : R) (sa * sc) with ⟨re, se, he⟩
- · simp_rw [← Submonoid.coe_mul] at hb hc hd
+ · simp_rw [← Submonoid.coe_mul] at hb hc hd
assoc_rw [Subtype.coe_eq_of_eq_mk hc]
rw [← OreLocalization.expand, Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ←
OreLocalization.expand, Subtype.coe_eq_of_eq_mk hb]
@@ -624,7 +625,7 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
·
rw [← OreLocalization.expand', ← mul_assoc, ← mul_assoc, ← OreLocalization.expand', ←
OreLocalization.expand']
- · simp_rw [← Submonoid.coe_mul] at ha hd
+ · simp_rw [← Submonoid.coe_mul] at ha hd
rw [Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ← mul_assoc, ← mul_assoc, ← OreLocalization.expand,
← OreLocalization.expand', Subtype.coe_eq_of_eq_mk ha, ← OreLocalization.expand]
apply OreLocalization.expand'
@@ -706,7 +707,8 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
induction' z using OreLocalization.ind with r₃ s₃
- rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
+ rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha';
+ norm_cast at ha
rw [OreLocalization.expand' r₁ s₁ sa]
rw [OreLocalization.expand r₂ s₂ ra (by rw [← ha] <;> apply SetLike.coe_mem)]
rw [← Subtype.coe_eq_of_eq_mk ha]
@@ -752,7 +754,7 @@ def universalHom : R[S⁻¹] →+* T :=
rw [add_mul, ← mul_assoc, mul_assoc (f r₁), hf, ← Units.val_mul]
simp only [mul_one, mul_right_inv, Units.val_one]
congr 1; rw [mul_assoc]; congr 1
- norm_cast at h₃; have h₃' := Subtype.coe_eq_of_eq_mk h₃
+ norm_cast at h₃ ; have h₃' := Subtype.coe_eq_of_eq_mk h₃
rw [← Units.val_mul, ← mul_inv_rev, ← fS.map_mul, h₃']
have hs₂r₃ : ↑s₂ * r₃ ∈ S := by rw [← h₃]; exact SetLike.coe_mem (s₁ * s₃)
apply (Units.inv_mul_cancel_left (fS s₂) _).symm.trans
@@ -821,15 +823,15 @@ open scoped nonZeroDivisors
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
by
- rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
+ rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
rcases h with ⟨u, v, h₁, h₂⟩
- simp only [S.coe_one, one_mul] at h₂
- rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
+ simp only [S.coe_one, one_mul] at h₂
+ rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_inj
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
⟨⟨0, 1, fun h => by
- rw [OreLocalization.one_def, OreLocalization.zero_def] at h
+ rw [OreLocalization.one_def, OreLocalization.zero_def] at h
apply nonZeroDivisors.coe_ne_zero 1 (numerator_hom_inj hS h).symm⟩⟩
#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisors
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -232,7 +232,7 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
exact S.mul_mem hr (SetLike.coe_mem s_flat)
have : (⟨↑s₁ * r, hr⟩ : S) * s_flat = ⟨s₁ * s₂' * s_star * p_flat, hsssp⟩ :=
by
- ext; simp only [[anonymous], Submonoid.coe_mul]
+ ext; simp only [SetLike.coe_mk, Submonoid.coe_mul]
rw [mul_assoc, h₃, ← mul_assoc, ← mul_assoc]
rw [this]; clear this
rcases ore_left_cancel (p * p') (r₁' * ↑s_star) s₂ (by simp [← mul_assoc, h₂]) with ⟨s₂'', h₂''⟩
@@ -388,7 +388,7 @@ def universalMulHom : R[S⁻¹] →* T
x.liftExpand (fun r s => f r * ((fS s)⁻¹ : Units T)) fun r t s ht =>
by
have : (fS ⟨s * t, ht⟩ : T) = fS s * f t := by
- simp only [← hf, [anonymous], MonoidHom.map_mul]
+ simp only [← hf, SetLike.coe_mk, MonoidHom.map_mul]
conv_rhs =>
rw [MonoidHom.map_mul, ← mul_one (f r), ← Units.val_one, ← mul_left_inv (fS s)]
rw [Units.val_mul, ← mul_assoc, mul_assoc _ ↑(fS s), ← this, mul_assoc]
@@ -746,7 +746,7 @@ def universalHom : R[S⁻¹] →+* T :=
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨r₃, s₃, h₃, h₃'⟩; rw [h₃']; clear h₃'
- simp only [universal_mul_hom_apply, [anonymous], RingHom.toMonoidHom_eq_coe,
+ simp only [universal_mul_hom_apply, RingHom.coe_monoidHom, RingHom.toMonoidHom_eq_coe,
MonoidHom.toFun_eq_coe]
simp only [mul_inv_rev, MonoidHom.map_mul, RingHom.map_add, RingHom.map_mul, Units.val_mul]
rw [add_mul, ← mul_assoc, mul_assoc (f r₁), hf, ← Units.val_mul]
@@ -863,7 +863,7 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
· simp [hr]
· by_cases ht : t = 0
· exfalso; apply nonZeroDivisors.coe_ne_zero ⟨_, hst⟩; simp [ht, MulZeroClass.mul_zero]
- · simp only [hr, ht, [anonymous], dif_neg, not_false_iff, or_self_iff, mul_eq_zero]
+ · simp only [hr, ht, SetLike.coe_mk, dif_neg, not_false_iff, or_self_iff, mul_eq_zero]
apply OreLocalization.expand)
#align ore_localization.inv OreLocalization.inv
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -816,7 +816,7 @@ instance : Ring R[S⁻¹] :=
{ OreLocalization.semiring, OreLocalization.hasNeg with
add_left_neg := OreLocalization.add_left_neg }
-open nonZeroDivisors
+open scoped nonZeroDivisors
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
@@ -837,9 +837,9 @@ end Ring
section DivisionRing
-open nonZeroDivisors
+open scoped nonZeroDivisors
-open Classical
+open scoped Classical
variable {R : Type _} [Ring R] [Nontrivial R] [OreSet R⁰]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -52,12 +52,6 @@ namespace OreLocalization
variable (R : Type _) [Monoid R] (S : Submonoid R) [OreSet S]
-/- warning: ore_localization.ore_eqv -> OreLocalization.oreEqv is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) [_inst_1 : Monoid.{u1} R] (S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], Setoid.{succ u1} (Prod.{u1, u1} R (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S))
-but is expected to have type
- forall (R : Type.{u1}) [_inst_1 : Monoid.{u1} R] (S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], Setoid.{succ u1} (Prod.{u1, u1} R (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_eqv OreLocalization.oreEqvₓ'. -/
/-- The setoid on `R × S` used for the Ore localization. -/
def oreEqv : Setoid (R × S)
where
@@ -105,12 +99,6 @@ attribute [local instance] ore_eqv
variable {R S}
-/- warning: ore_localization.ore_div -> OreLocalization.oreDiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (OreLocalization.{u1} R _inst_1 S _inst_2)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> (OreLocalization.{u1} R _inst_1 S _inst_2)
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div OreLocalization.oreDivₓ'. -/
/-- The division in the ore localization `R[S⁻¹]`, as a fraction of an element of `R` and `S`. -/
def oreDiv (r : R) (s : S) : R[S⁻¹] :=
Quotient.mk' (r, s)
@@ -119,54 +107,27 @@ def oreDiv (r : R) (s : S) : R[S⁻¹] :=
-- mathport name: «expr /ₒ »
infixl:70 " /ₒ " => oreDiv
-/- warning: ore_localization.ind -> OreLocalization.ind is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {β : (OreLocalization.{u1} R _inst_1 S _inst_2) -> Prop}, (forall (r : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), β (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) -> (forall (q : OreLocalization.{u1} R _inst_1 S _inst_2), β q)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {β : (OreLocalization.{u1} R _inst_1 S _inst_2) -> Prop}, (forall (r : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), β (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) -> (forall (q : OreLocalization.{u1} R _inst_1 S _inst_2), β q)
-Case conversion may be inaccurate. Consider using '#align ore_localization.ind OreLocalization.indₓ'. -/
@[elab_as_elim]
protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r /ₒ s)) : ∀ q, β q := by
apply Quotient.ind; rintro ⟨r, s⟩; exact c r s
#align ore_localization.ind OreLocalization.ind
-/- warning: ore_localization.ore_div_eq_iff -> OreLocalization.oreDiv_eq_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iffₓ'. -/
theorem oreDiv_eq_iff {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S)(v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
Quotient.eq''
#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iff
-/- warning: ore_localization.expand -> OreLocalization.expand is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (t : R) (hst : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) hst))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (t : R) (hst : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) hst))
-Case conversion may be inaccurate. Consider using '#align ore_localization.expand OreLocalization.expandₓ'. -/
/-- A fraction `r /ₒ s` is equal to its expansion by an arbitrary factor `t` if `s * t ∈ S`. -/
protected theorem expand (r : R) (s : S) (t : R) (hst : (s : R) * t ∈ S) :
r /ₒ s = r * t /ₒ ⟨s * t, hst⟩ := by apply Quotient.sound;
refine' ⟨s, t * s, _, _⟩ <;> dsimp <;> rw [mul_assoc] <;> rfl
#align ore_localization.expand OreLocalization.expand
-/- warning: ore_localization.expand' -> OreLocalization.expand' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s')) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s s'))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (s' : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s')) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s s'))
-Case conversion may be inaccurate. Consider using '#align ore_localization.expand' OreLocalization.expand'ₓ'. -/
/-- A fraction is equal to its expansion by an factor from s. -/
protected theorem expand' (r : R) (s s' : S) : r /ₒ s = r * s' /ₒ (s * s') :=
OreLocalization.expand r s s' (by norm_cast <;> apply SetLike.coe_mem)
#align ore_localization.expand' OreLocalization.expand'
-/- warning: ore_localization.eq_of_num_factor_eq -> OreLocalization.eq_of_num_factor_eq is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {r' : R} {r₁ : R} {r₂ : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {t : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r' ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) t))) -> (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r) r₂) s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') r₂) s))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {r' : R} {r₁ : R} {r₂ : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {t : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r' (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) t))) -> (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r) r₂) s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') r₂) s))
-Case conversion may be inaccurate. Consider using '#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eqₓ'. -/
/-- Fractions which differ by a factor of the numerator can be proven equal if
those factors expand to equal elements of `R`. -/
protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t = r' * t) :
@@ -186,9 +147,6 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eq
-/- warning: ore_localization.lift_expand -> OreLocalization.liftExpand is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.lift_expand OreLocalization.liftExpandₓ'. -/
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
under expansion on the right. -/
def liftExpand {C : Sort _} (P : R → S → C)
@@ -203,9 +161,6 @@ def liftExpand {C : Sort _} (P : R → S → C)
simpa [← hs₂]
#align ore_localization.lift_expand OreLocalization.liftExpand
-/- warning: ore_localization.lift_expand_of -> OreLocalization.liftExpand_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.lift_expand_of OreLocalization.liftExpand_ofₓ'. -/
@[simp]
theorem liftExpand_of {C : Sort _} {P : R → S → C}
{hP : ∀ (r t : R) (s : S) (ht : (s : R) * t ∈ S), P r s = P (r * t) ⟨s * t, ht⟩} (r : R)
@@ -213,9 +168,6 @@ theorem liftExpand_of {C : Sort _} {P : R → S → C}
rfl
#align ore_localization.lift_expand_of OreLocalization.liftExpand_of
-/- warning: ore_localization.lift₂_expand -> OreLocalization.lift₂Expand is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.lift₂_expand OreLocalization.lift₂Expandₓ'. -/
/-- A version of `lift_expand` used to simultaneously lift functions with two arguments
in ``R[S⁻¹]`.-/
def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
@@ -232,9 +184,6 @@ def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
rw [lift_expand_of, lift_expand_of, hP r₁ t₁ s₁ ht₁ r₂ 1 s₂ (by simp)]; simp
#align ore_localization.lift₂_expand OreLocalization.lift₂Expand
-/- warning: ore_localization.lift₂_expand_of -> OreLocalization.lift₂Expand_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.lift₂_expand_of OreLocalization.lift₂Expand_ofₓ'. -/
@[simp]
theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
{hP :
@@ -296,23 +245,11 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
instance : Mul R[S⁻¹] :=
⟨OreLocalization.mul⟩
-/- warning: ore_localization.ore_div_mul_ore_div -> OreLocalization.oreDiv_mul_oreDiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ (OreLocalization.oreNum.{u1} R _inst_1 S _inst_2 r₂ s₁)) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ (OreLocalization.oreDenom.{u1} R _inst_1 S _inst_2 r₂ s₁)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ (OreLocalization.oreNum.{u1} R _inst_1 S _inst_2 r₂ s₁)) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ (OreLocalization.oreDenom.{u1} R _inst_1 S _inst_2 r₂ s₁)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_mul_ore_div OreLocalization.oreDiv_mul_oreDivₓ'. -/
theorem oreDiv_mul_oreDiv {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * oreNum r₂ s₁ /ₒ (s₂ * oreDenom r₂ s₁) :=
rfl
#align ore_localization.ore_div_mul_ore_div OreLocalization.oreDiv_mul_oreDiv
-/- warning: ore_localization.ore_div_mul_char -> OreLocalization.oreDiv_mul_char is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r₁ : R) (r₂ : R) (s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (r' : R) (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) r')) -> (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ s')))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r₁ : R) (r₂ : R) (s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (r' : R) (s' : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) r')) -> (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ s')))
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_mul_char OreLocalization.oreDiv_mul_charₓ'. -/
/-- A characterization lemma for the multiplication on the Ore localization, allowing for a choice
of Ore numerator and Ore denominator. -/
theorem oreDiv_mul_char (r₁ r₂ : R) (s₁ s₂ : S) (r' : R) (s' : S) (huv : r₂ * (s' : R) = s₁ * r') :
@@ -320,9 +257,6 @@ theorem oreDiv_mul_char (r₁ r₂ : R) (s₁ s₂ : S) (r' : R) (s' : S) (huv :
mul'_char r₁ r₂ s₁ s₂ s' r' huv
#align ore_localization.ore_div_mul_char OreLocalization.oreDiv_mul_char
-/- warning: ore_localization.ore_div_mul_char' -> OreLocalization.oreDivMulChar' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_mul_char' OreLocalization.oreDivMulChar'ₓ'. -/
/-- Another characterization lemma for the multiplication on the Ore localizaion delivering
Ore witnesses and conditions bundled in a sigma type. -/
def oreDivMulChar' (r₁ r₂ : R) (s₁ s₂ : S) :
@@ -333,12 +267,6 @@ def oreDivMulChar' (r₁ r₂ : R) (s₁ s₂ : S) :
instance : One R[S⁻¹] :=
⟨1 /ₒ 1⟩
-/- warning: ore_localization.one_def -> OreLocalization.one_def is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2)))) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (MulOneClass.toHasOne.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))))) (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2))) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Monoid.toOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
-Case conversion may be inaccurate. Consider using '#align ore_localization.one_def OreLocalization.one_defₓ'. -/
protected theorem one_def : (1 : R[S⁻¹]) = 1 /ₒ 1 :=
rfl
#align ore_localization.one_def OreLocalization.one_def
@@ -346,46 +274,22 @@ protected theorem one_def : (1 : R[S⁻¹]) = 1 /ₒ 1 :=
instance : Inhabited R[S⁻¹] :=
⟨1⟩
-/- warning: ore_localization.div_eq_one' -> OreLocalization.div_eq_one' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} (hr : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) r hr)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} (hr : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) r hr)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.div_eq_one' OreLocalization.div_eq_one'ₓ'. -/
@[simp]
protected theorem div_eq_one' {r : R} (hr : r ∈ S) : r /ₒ ⟨r, hr⟩ = 1 := by
rw [OreLocalization.one_def, ore_div_eq_iff]; exact ⟨⟨r, hr⟩, 1, by simp, by simp⟩
#align ore_localization.div_eq_one' OreLocalization.div_eq_one'
-/- warning: ore_localization.div_eq_one -> OreLocalization.div_eq_one is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) s) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) s) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.div_eq_one OreLocalization.div_eq_oneₓ'. -/
@[simp]
protected theorem div_eq_one {s : S} : (s : R) /ₒ s = 1 := by
cases s <;> apply OreLocalization.div_eq_one'
#align ore_localization.div_eq_one OreLocalization.div_eq_one
-/- warning: ore_localization.one_mul -> OreLocalization.one_mul is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (x : OreLocalization.{u1} R _inst_1 S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2)))) x) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (x : OreLocalization.{u1} R _inst_1 S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2))) x) x
-Case conversion may be inaccurate. Consider using '#align ore_localization.one_mul OreLocalization.one_mulₓ'. -/
protected theorem one_mul (x : R[S⁻¹]) : 1 * x = x :=
by
induction' x using OreLocalization.ind with r s
simp [OreLocalization.one_def, ore_div_mul_char (1 : R) r (1 : S) s r 1 (by simp)]
#align ore_localization.one_mul OreLocalization.one_mul
-/- warning: ore_localization.mul_one -> OreLocalization.mul_one is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (x : OreLocalization.{u1} R _inst_1 S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2))))) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (x : OreLocalization.{u1} R _inst_1 S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2)))) x
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_one OreLocalization.mul_oneₓ'. -/
protected theorem mul_one (x : R[S⁻¹]) : x * 1 = x :=
by
induction' x using OreLocalization.ind with r s
@@ -416,64 +320,31 @@ instance : Monoid R[S⁻¹] :=
mul_one := OreLocalization.mul_one
mul_assoc := OreLocalization.mul_assoc }
-/- warning: ore_localization.mul_inv -> OreLocalization.mul_inv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) s') (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s') s)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.one.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasOne.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (s' : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) s') (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s') s)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_inv OreLocalization.mul_invₓ'. -/
protected theorem mul_inv (s s' : S) : (s : R) /ₒ s' * (s' /ₒ s) = 1 := by
simp [ore_div_mul_char (s : R) s' s' s 1 1 (by simp)]
#align ore_localization.mul_inv OreLocalization.mul_inv
-/- warning: ore_localization.mul_one_div -> OreLocalization.mul_one_div is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {t : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (MulOneClass.toHasOne.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))))) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) t s))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {t : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Monoid.toOne.{u1} R _inst_1))) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) t s))
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_one_div OreLocalization.mul_one_divₓ'. -/
@[simp]
protected theorem mul_one_div {r : R} {s t : S} : r /ₒ s * (1 /ₒ t) = r /ₒ (t * s) := by
simp [ore_div_mul_char r 1 s t 1 s (by simp)]
#align ore_localization.mul_one_div OreLocalization.mul_one_div
-/- warning: ore_localization.mul_cancel -> OreLocalization.mul_cancel is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {t : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r t)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {t : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r t)
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_cancel OreLocalization.mul_cancelₓ'. -/
@[simp]
protected theorem mul_cancel {r : R} {s t : S} : r /ₒ s * (s /ₒ t) = r /ₒ t := by
simp [ore_div_mul_char r s s t 1 1 (by simp)]
#align ore_localization.mul_cancel OreLocalization.mul_cancel
-/- warning: ore_localization.mul_cancel' -> OreLocalization.mul_cancel' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_cancel' OreLocalization.mul_cancel'ₓ'. -/
@[simp]
protected theorem mul_cancel' {r₁ r₂ : R} {s t : S} : r₁ /ₒ s * (s * r₂ /ₒ t) = r₁ * r₂ /ₒ t := by
simp [ore_div_mul_char r₁ (s * r₂) s t r₂ 1 (by simp)]
#align ore_localization.mul_cancel' OreLocalization.mul_cancel'
-/- warning: ore_localization.div_one_mul -> OreLocalization.div_one_mul is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {p : R} {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 p s)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r p) s)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {p : R} {r : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 p s)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r p) s)
-Case conversion may be inaccurate. Consider using '#align ore_localization.div_one_mul OreLocalization.div_one_mulₓ'. -/
@[simp]
theorem div_one_mul {p r : R} {s : S} : r /ₒ 1 * (p /ₒ s) = r * p /ₒ s :=
by--TODO use coercion r ↦ r /ₒ 1
simp [ore_div_mul_char r p 1 s p 1 (by simp)]
#align ore_localization.div_one_mul OreLocalization.div_one_mul
-/- warning: ore_localization.numerator_unit -> OreLocalization.numeratorUnit is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> (Units.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))
-Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_unit OreLocalization.numeratorUnitₓ'. -/
/-- The fraction `s /ₒ 1` as a unit in `R[S⁻¹]`, where `s : S`. -/
def numeratorUnit (s : S) : Units R[S⁻¹]
where
@@ -483,12 +354,6 @@ def numeratorUnit (s : S) : Units R[S⁻¹]
inv_val := OreLocalization.mul_inv 1 s
#align ore_localization.numerator_unit OreLocalization.numeratorUnit
-/- warning: ore_localization.numerator_hom -> OreLocalization.numeratorHom is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S], MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))
-Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom OreLocalization.numeratorHomₓ'. -/
/-- The multiplicative homomorphism from `R` to `R[S⁻¹]`, mapping `r : R` to the
fraction `r /ₒ 1`. -/
def numeratorHom : R →* R[S⁻¹] where
@@ -497,22 +362,10 @@ def numeratorHom : R →* R[S⁻¹] where
map_mul' r₁ r₂ := div_one_mul.symm
#align ore_localization.numerator_hom OreLocalization.numeratorHom
-/- warning: ore_localization.numerator_hom_apply -> OreLocalization.numeratorHom_apply is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
-Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_applyₓ'. -/
theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
rfl
#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_apply
-/- warning: ore_localization.numerator_is_unit -> OreLocalization.numerator_isUnit is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), IsUnit.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
-Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnitₓ'. -/
theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
⟨numeratorUnit s, rfl⟩
#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnit
@@ -527,9 +380,6 @@ variable (hf : ∀ s : S, f s = fS s)
include f fS hf
-/- warning: ore_localization.universal_mul_hom -> OreLocalization.universalMulHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom OreLocalization.universalMulHomₓ'. -/
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
def universalMulHom : R[S⁻¹] →* T
@@ -559,24 +409,15 @@ def universalMulHom : R[S⁻¹] →* T
rfl
#align ore_localization.universal_mul_hom OreLocalization.universalMulHom
-/- warning: ore_localization.universal_mul_hom_apply -> OreLocalization.universalMulHom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
rfl
#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_apply
-/- warning: ore_localization.universal_mul_hom_commutes -> OreLocalization.universalMulHom_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutesₓ'. -/
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutes
-/- warning: ore_localization.universal_mul_hom_unique -> OreLocalization.universalMulHom_unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_uniqueₓ'. -/
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalMulHom f fS hf := by
@@ -594,12 +435,6 @@ section CommMonoid
variable {R : Type _} [CommMonoid R] {S : Submonoid R} [OreSet S]
-/- warning: ore_localization.ore_div_mul_ore_div_comm -> OreLocalization.oreDiv_mul_oreDiv_comm is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : CommMonoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))} [_inst_2 : OreLocalization.OreSet.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S] {r₁ : R} {r₂ : R} {s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S} {s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S}, Eq.{succ u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasMul.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2)) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) r₁ r₂) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) S)) s₁ s₂))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : CommMonoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))} [_inst_2 : OreLocalization.OreSet.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S] {r₁ : R} {r₂ : R} {s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)} {s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2)) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) r₁ r₂) (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) S)) s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_mul_ore_div_comm OreLocalization.oreDiv_mul_oreDiv_commₓ'. -/
theorem oreDiv_mul_oreDiv_comm {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r₂ /ₒ (s₁ * s₂) := by
rw [ore_div_mul_char r₁ r₂ s₁ s₂ r₂ s₁ (by simp [mul_comm]), mul_comm s₂]
@@ -614,12 +449,6 @@ instance : CommMonoid R[S⁻¹] :=
variable (R S)
-/- warning: ore_localization.localization_map -> OreLocalization.localizationMap is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) [_inst_1 : CommMonoid.{u1} R] (S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) [_inst_2 : OreLocalization.OreSet.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S], Submonoid.LocalizationMap.{u1, u1} R _inst_1 S (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.commMonoid.{u1} R _inst_1 S _inst_2)
-but is expected to have type
- forall (R : Type.{u1}) [_inst_1 : CommMonoid.{u1} R] (S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) [_inst_2 : OreLocalization.OreSet.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S], Submonoid.LocalizationMap.{u1, u1} R _inst_1 S (OreLocalization.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.instCommMonoidOreLocalizationToMonoid.{u1} R _inst_1 S _inst_2)
-Case conversion may be inaccurate. Consider using '#align ore_localization.localization_map OreLocalization.localizationMapₓ'. -/
/-- The morphism `numerator_hom` is a monoid localization map in the case of commutative `R`. -/
protected def localizationMap : S.LocalizationMap R[S⁻¹]
where
@@ -748,17 +577,11 @@ private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
instance : Add R[S⁻¹] :=
⟨add⟩
-/- warning: ore_localization.ore_div_add_ore_div -> OreLocalization.oreDiv_add_oreDiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_ore_div OreLocalization.oreDiv_add_oreDivₓ'. -/
theorem oreDiv_add_oreDiv {r r' : R} {s s' : S} :
r /ₒ s + r' /ₒ s' = (r * oreDenom (s : R) s' + r' * oreNum s s') /ₒ (s * oreDenom s s') :=
rfl
#align ore_localization.ore_div_add_ore_div OreLocalization.oreDiv_add_oreDiv
-/- warning: ore_localization.ore_div_add_char -> OreLocalization.oreDiv_add_char is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_char OreLocalization.oreDiv_add_charₓ'. -/
/-- A characterization of the addition on the Ore localizaion, allowing for arbitrary Ore
numerator and Ore denominator. -/
theorem oreDiv_add_char {r r' : R} (s s' : S) (rb : R) (sb : S) (h : (s : R) * sb = s' * rb) :
@@ -766,9 +589,6 @@ theorem oreDiv_add_char {r r' : R} (s s' : S) (rb : R) (sb : S) (h : (s : R) * s
add''_char r s r' s' rb sb h
#align ore_localization.ore_div_add_char OreLocalization.oreDiv_add_char
-/- warning: ore_localization.ore_div_add_char' -> OreLocalization.oreDivAddChar' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_char' OreLocalization.oreDivAddChar'ₓ'. -/
/-- Another characterization of the addition on the Ore localization, bundling up all witnesses
and conditions into a sigma type. -/
def oreDivAddChar' (r r' : R) (s s' : S) :
@@ -777,23 +597,11 @@ def oreDivAddChar' (r r' : R) (s s' : S) :
⟨oreNum s s', oreDenom s s', ore_eq s s', oreDiv_add_oreDiv⟩
#align ore_localization.ore_div_add_char' OreLocalization.oreDivAddChar'
-/- warning: ore_localization.add_ore_div -> OreLocalization.add_oreDiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r r') s)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r r') s)
-Case conversion may be inaccurate. Consider using '#align ore_localization.add_ore_div OreLocalization.add_oreDivₓ'. -/
@[simp]
theorem add_oreDiv {r r' : R} {s : S} : r /ₒ s + r' /ₒ s = (r + r') /ₒ s := by
simp [ore_div_add_char s s 1 1 (by simp)]
#align ore_localization.add_ore_div OreLocalization.add_oreDiv
-/- warning: ore_localization.add_assoc -> OreLocalization.add_assoc is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) x y) z) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) x (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) y z))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) x y) z) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) x (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) y z))
-Case conversion may be inaccurate. Consider using '#align ore_localization.add_assoc OreLocalization.add_assocₓ'. -/
protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -828,45 +636,21 @@ private def zero : R[S⁻¹] :=
instance : Zero R[S⁻¹] :=
⟨zero⟩
-/- warning: ore_localization.zero_def -> OreLocalization.zero_def is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S], Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2)))) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (Submonoid.one.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S], Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) S))))
-Case conversion may be inaccurate. Consider using '#align ore_localization.zero_def OreLocalization.zero_defₓ'. -/
protected theorem zero_def : (0 : R[S⁻¹]) = 0 /ₒ 1 :=
rfl
#align ore_localization.zero_def OreLocalization.zero_def
-/- warning: ore_localization.zero_div_eq_zero -> OreLocalization.zero_div_eq_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))))) s) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) s) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.zero_div_eq_zero OreLocalization.zero_div_eq_zeroₓ'. -/
@[simp]
theorem zero_div_eq_zero (s : S) : 0 /ₒ s = 0 := by rw [OreLocalization.zero_def, ore_div_eq_iff];
exact ⟨s, 1, by simp⟩
#align ore_localization.zero_div_eq_zero OreLocalization.zero_div_eq_zero
-/- warning: ore_localization.zero_add -> OreLocalization.zero_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2)))) x) x
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) x) x
-Case conversion may be inaccurate. Consider using '#align ore_localization.zero_add OreLocalization.zero_addₓ'. -/
protected theorem zero_add (x : R[S⁻¹]) : 0 + x = x :=
by
induction x using OreLocalization.ind
rw [← zero_div_eq_zero, add_ore_div]; simp
#align ore_localization.zero_add OreLocalization.zero_add
-/- warning: ore_localization.add_comm -> OreLocalization.add_comm is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) x y) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) y x)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) x y) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) y x)
-Case conversion may be inaccurate. Consider using '#align ore_localization.add_comm OreLocalization.add_commₓ'. -/
protected theorem add_comm (x y : R[S⁻¹]) : x + y = y + x :=
by
induction x using OreLocalization.ind
@@ -882,36 +666,18 @@ instance : AddCommMonoid R[S⁻¹] :=
zero_add := OreLocalization.zero_add
add_zero := fun x => by rw [OreLocalization.add_comm, OreLocalization.zero_add] }
-/- warning: ore_localization.zero_mul -> OreLocalization.zero_mul is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2)))) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.zero_mul OreLocalization.zero_mulₓ'. -/
protected theorem zero_mul (x : R[S⁻¹]) : 0 * x = 0 :=
by
induction' x using OreLocalization.ind with r s
rw [OreLocalization.zero_def, ore_div_mul_char 0 r 1 s r 1 (by simp)]; simp
#align ore_localization.zero_mul OreLocalization.zero_mul
-/- warning: ore_localization.mul_zero -> OreLocalization.mul_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2))))) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasZero.{u1} R _inst_1 S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_zero OreLocalization.mul_zeroₓ'. -/
protected theorem mul_zero (x : R[S⁻¹]) : x * 0 = 0 :=
by
induction' x using OreLocalization.ind with r s
rw [OreLocalization.zero_def, ore_div_mul_char r 0 s 1 0 1 (by simp)]; simp
#align ore_localization.mul_zero OreLocalization.mul_zero
-/- warning: ore_localization.left_distrib -> OreLocalization.left_distrib is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) y z)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x y) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x z))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) y z)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x y) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x z))
-Case conversion may be inaccurate. Consider using '#align ore_localization.left_distrib OreLocalization.left_distribₓ'. -/
protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -935,12 +701,6 @@ protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z
rw [OreLocalization.mul_cancel']; simp only [mul_one, Submonoid.coe_mul, mul_add, ← mul_assoc]
#align ore_localization.left_distrib OreLocalization.left_distrib
-/- warning: ore_localization.right_distrib -> OreLocalization.right_distrib is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) x y) z) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x z) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasMul.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) y z))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (y : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (z : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) x y) z) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) x z) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) y z))
-Case conversion may be inaccurate. Consider using '#align ore_localization.right_distrib OreLocalization.right_distribₓ'. -/
theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z :=
by
induction' x using OreLocalization.ind with r₁ s₁
@@ -971,9 +731,6 @@ variable (hf : ∀ s : S, f s = fS s)
include f fS hf
-/- warning: ore_localization.universal_hom -> OreLocalization.universalHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom OreLocalization.universalHomₓ'. -/
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
monoids. -/
@@ -1015,24 +772,15 @@ def universalHom : R[S⁻¹] →+* T :=
rw [one_mul, ← h₃', Units.mul_inv, mul_one] }
#align ore_localization.universal_hom OreLocalization.universalHom
-/- warning: ore_localization.universal_hom_apply -> OreLocalization.universalHom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
rfl
#align ore_localization.universal_hom_apply OreLocalization.universalHom_apply
-/- warning: ore_localization.universal_hom_commutes -> OreLocalization.universalHom_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutesₓ'. -/
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutes
-/- warning: ore_localization.universal_hom_unique -> OreLocalization.universalHom_unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_unique OreLocalization.universalHom_uniqueₓ'. -/
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
RingHom.coe_monoidHom_injective <| universalMulHom_unique (RingHom.toMonoidHom f) fS hf (↑φ) huniv
@@ -1046,12 +794,6 @@ section Ring
variable {R : Type _} [Ring R] {S : Submonoid R} [OreSet S]
-/- warning: ore_localization.neg -> OreLocalization.neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)
-Case conversion may be inaccurate. Consider using '#align ore_localization.neg OreLocalization.negₓ'. -/
/-- Negation on the Ore localization is defined via negation on the numerator. -/
protected def neg : R[S⁻¹] → R[S⁻¹] :=
liftExpand (fun (r : R) (s : S) => -r /ₒ s) fun r t s ht => by
@@ -1061,23 +803,11 @@ protected def neg : R[S⁻¹] → R[S⁻¹] :=
instance : Neg R[S⁻¹] :=
⟨OreLocalization.neg⟩
-/- warning: ore_localization.neg_def -> OreLocalization.neg_def is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (r : R) (s : 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 _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 _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) S), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R _inst_1))))) r) s)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (r : R) (s : 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 (Ring.toSemiring.{u1} R _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 (Neg.neg.{u1} R (Ring.toNeg.{u1} R _inst_1) r) s)
-Case conversion may be inaccurate. Consider using '#align ore_localization.neg_def OreLocalization.neg_defₓ'. -/
@[simp]
protected theorem neg_def (r : R) (s : S) : -(r /ₒ s) = -r /ₒ s :=
rfl
#align ore_localization.neg_def OreLocalization.neg_def
-/- warning: ore_localization.add_left_neg -> OreLocalization.add_left_neg is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (x : OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasAdd.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) x) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) x) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.add_left_neg OreLocalization.add_left_negₓ'. -/
protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
induction' x using OreLocalization.ind with r s <;> simp
#align ore_localization.add_left_neg OreLocalization.add_left_neg
@@ -1088,12 +818,6 @@ instance : Ring R[S⁻¹] :=
open nonZeroDivisors
-/- warning: ore_localization.numerator_hom_inj -> OreLocalization.numeratorHom_inj is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
by
@@ -1103,12 +827,6 @@ theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom :
rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_inj
-/- warning: ore_localization.nontrivial_of_non_zero_divisors -> OreLocalization.nontrivial_of_nonZeroDivisors is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))
-Case conversion may be inaccurate. Consider using '#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisorsₓ'. -/
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
⟨⟨0, 1, fun h => by
rw [OreLocalization.one_def, OreLocalization.zero_def] at h
@@ -1132,12 +850,6 @@ variable [NoZeroDivisors R]
noncomputable section
-/- warning: ore_localization.inv -> OreLocalization.inv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R _inst_1)) (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))], (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))], (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)
-Case conversion may be inaccurate. Consider using '#align ore_localization.inv OreLocalization.invₓ'. -/
/-- The inversion of Ore fractions for a ring without zero divisors, satisying `0⁻¹ = 0` and
`(r /ₒ r')⁻¹ = r' /ₒ r` for `r ≠ 0`. -/
protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
@@ -1158,9 +870,6 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
instance : Inv R[R⁰⁻¹] :=
⟨OreLocalization.inv⟩
-/- warning: ore_localization.inv_def -> OreLocalization.inv_def is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ore_localization.inv_def OreLocalization.inv_defₓ'. -/
protected theorem inv_def {r : R} {s : R⁰} :
(r /ₒ s)⁻¹ =
if hr : r = (0 : R) then (0 : R[R⁰⁻¹])
@@ -1168,12 +877,6 @@ protected theorem inv_def {r : R} {s : R⁰} :
rfl
#align ore_localization.inv_def OreLocalization.inv_def
-/- warning: ore_localization.mul_inv_cancel -> OreLocalization.mul_inv_cancel is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R _inst_1)) (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))] (x : OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3), (Ne.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3))))) -> (Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (instHMul.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasMul.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)) x (Inv.inv.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasInv.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) x)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 1 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 1 (One.one.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasOne.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3), (Ne.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) x (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))) -> (Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (instHMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instMulOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)) x (Inv.inv.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.inv'.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) x)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instOneOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3))))
-Case conversion may be inaccurate. Consider using '#align ore_localization.mul_inv_cancel OreLocalization.mul_inv_cancelₓ'. -/
protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ = 1 :=
by
induction' x using OreLocalization.ind with r s
@@ -1183,12 +886,6 @@ protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ =
· simp [hr]; apply OreLocalization.div_eq_one'
#align ore_localization.mul_inv_cancel OreLocalization.mul_inv_cancel
-/- warning: ore_localization.inv_zero -> OreLocalization.inv_zero is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R _inst_1)) (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))], Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Inv.inv.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasInv.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3))))) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))], Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Inv.inv.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.inv'.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))
-Case conversion may be inaccurate. Consider using '#align ore_localization.inv_zero OreLocalization.inv_zeroₓ'. -/
protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
rw [OreLocalization.zero_def, OreLocalization.inv_def]; simp
#align ore_localization.inv_zero OreLocalization.inv_zero
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -64,31 +64,19 @@ def oreEqv : Setoid (R × S)
R rs rs' := ∃ (u : S)(v : R), rs'.1 * u = rs.1 * v ∧ (rs'.2 : R) * u = rs.2 * v
iseqv := by
refine' ⟨_, _, _⟩
- · rintro ⟨r, s⟩
- use 1
- use 1
- simp [Submonoid.one_mem]
+ · rintro ⟨r, s⟩; use 1; use 1; simp [Submonoid.one_mem]
· rintro ⟨r, s⟩ ⟨r', s'⟩ ⟨u, v, hru, hsu⟩
rcases ore_condition (s : R) s' with ⟨r₂, s₂, h₁⟩
rcases ore_condition r₂ u with ⟨r₃, s₃, h₂⟩
- have : (s : R) * ((v : R) * r₃) = (s : R) * (s₂ * s₃) :=
- by
- assoc_rw [h₁, h₂, hsu]
- symm
+ have : (s : R) * ((v : R) * r₃) = (s : R) * (s₂ * s₃) := by assoc_rw [h₁, h₂, hsu]; symm;
apply mul_assoc
rcases ore_left_cancel (v * r₃) (s₂ * s₃) s this with ⟨w, hw⟩
- use s₂ * s₃ * w
- use u * r₃ * w
- constructor <;> simp only [Submonoid.coe_mul]
- · assoc_rw [hru, ← hw]
- simp [mul_assoc]
- · assoc_rw [hsu, ← hw]
- simp [mul_assoc]
+ use s₂ * s₃ * w; use u * r₃ * w; constructor <;> simp only [Submonoid.coe_mul]
+ · assoc_rw [hru, ← hw]; simp [mul_assoc]
+ · assoc_rw [hsu, ← hw]; simp [mul_assoc]
· rintro ⟨r₁, s₁⟩ ⟨r₂, s₂⟩ ⟨r₃, s₃⟩ ⟨u, v, hur₁, hs₁u⟩ ⟨u', v', hur₂, hs₂u⟩
rcases ore_condition v' u with ⟨r', s', h⟩
- use u' * s'
- use v * r'
- constructor <;> simp only [Submonoid.coe_mul]
+ use u' * s'; use v * r'; constructor <;> simp only [Submonoid.coe_mul]
· assoc_rw [hur₂, h, hur₁, mul_assoc]
· assoc_rw [hs₂u, h, hs₁u, mul_assoc]
#align ore_localization.ore_eqv OreLocalization.oreEqv
@@ -138,11 +126,8 @@ but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {β : (OreLocalization.{u1} R _inst_1 S _inst_2) -> Prop}, (forall (r : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), β (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) -> (forall (q : OreLocalization.{u1} R _inst_1 S _inst_2), β q)
Case conversion may be inaccurate. Consider using '#align ore_localization.ind OreLocalization.indₓ'. -/
@[elab_as_elim]
-protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r /ₒ s)) : ∀ q, β q :=
- by
- apply Quotient.ind
- rintro ⟨r, s⟩
- exact c r s
+protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r /ₒ s)) : ∀ q, β q := by
+ apply Quotient.ind; rintro ⟨r, s⟩; exact c r s
#align ore_localization.ind OreLocalization.ind
/- warning: ore_localization.ore_div_eq_iff -> OreLocalization.oreDiv_eq_iff is a dubious translation:
@@ -161,8 +146,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ore_localization.expand OreLocalization.expandₓ'. -/
/-- A fraction `r /ₒ s` is equal to its expansion by an arbitrary factor `t` if `s * t ∈ S`. -/
protected theorem expand (r : R) (s : S) (t : R) (hst : (s : R) * t ∈ S) :
- r /ₒ s = r * t /ₒ ⟨s * t, hst⟩ := by
- apply Quotient.sound
+ r /ₒ s = r * t /ₒ ⟨s * t, hst⟩ := by apply Quotient.sound;
refine' ⟨s, t * s, _, _⟩ <;> dsimp <;> rw [mul_assoc] <;> rfl
#align ore_localization.expand OreLocalization.expand
@@ -211,23 +195,11 @@ def liftExpand {C : Sort _} (P : R → S → C)
(hP : ∀ (r t : R) (s : S) (ht : (s : R) * t ∈ S), P r s = P (r * t) ⟨s * t, ht⟩) : R[S⁻¹] → C :=
Quotient.lift (fun p : R × S => P p.1 p.2) fun p q pq =>
by
- cases' p with r₁ s₁
- cases' q with r₂ s₂
- rcases pq with ⟨u, v, hr₂, hs₂⟩
+ cases' p with r₁ s₁; cases' q with r₂ s₂; rcases pq with ⟨u, v, hr₂, hs₂⟩
dsimp at *
- have s₁vS : (s₁ : R) * v ∈ S := by
- rw [← hs₂, ← S.coe_mul]
- exact SetLike.coe_mem (s₂ * u)
- replace hs₂ : s₂ * u = ⟨(s₁ : R) * v, s₁vS⟩
- · ext
- simp [hs₂]
- rw [hP r₁ v s₁ s₁vS,
- hP r₂ u s₂
- (by
- norm_cast
- rw [hs₂]
- assumption),
- hr₂]
+ have s₁vS : (s₁ : R) * v ∈ S := by rw [← hs₂, ← S.coe_mul]; exact SetLike.coe_mem (s₂ * u)
+ replace hs₂ : s₂ * u = ⟨(s₁ : R) * v, s₁vS⟩; · ext; simp [hs₂]
+ rw [hP r₁ v s₁ s₁vS, hP r₂ u s₂ (by norm_cast; rw [hs₂]; assumption), hr₂]
simpa [← hs₂]
#align ore_localization.lift_expand OreLocalization.liftExpand
@@ -291,44 +263,32 @@ private theorem mul'_char (r₁ r₂ : R) (s₁ s₂ : S) (u : S) (v : R) (huv :
rcases ore_left_cancel _ _ _ this with ⟨s₄, hs₄⟩
symm; rw [ore_div_eq_iff]
use s₃ * s₄; use r₃ * s₄; simp only [Submonoid.coe_mul]; constructor
- · assoc_rw [← hs₄]
- simp only [mul_assoc]
- · assoc_rw [h₃]
- simp only [mul_assoc]
+ · assoc_rw [← hs₄]; simp only [mul_assoc]
+ · assoc_rw [h₃]; simp only [mul_assoc]
#print OreLocalization.mul /-
/-- The multiplication on the Ore localization of monoids. -/
protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
lift₂Expand mul' fun r₂ p s₂ hp r₁ r s₁ hr =>
by
- have h₁ := ore_eq r₁ s₂
- set r₁' := ore_num r₁ s₂
- set s₂' := ore_denom r₁ s₂
- rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩
- dsimp at h₂
- rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩
- simp only [S.coe_mul] at h₃
- have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) :=
- by
- rw [← mul_assoc, ← h₂, ← h₁, mul_assoc, h₃]
- simp only [mul_assoc]
- rw [mul'_char (r₂ * p) (r₁ * r) ⟨↑s₂ * p, hp⟩ ⟨↑s₁ * r, hr⟩ _ _ this]
- clear this
+ have h₁ := ore_eq r₁ s₂; set r₁' := ore_num r₁ s₂; set s₂' := ore_denom r₁ s₂
+ rcases ore_condition (↑s₂ * r₁') ⟨s₂ * p, hp⟩ with ⟨p', s_star, h₂⟩; dsimp at h₂
+ rcases ore_condition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩; simp only [S.coe_mul] at h₃
+ have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) := by
+ rw [← mul_assoc, ← h₂, ← h₁, mul_assoc, h₃]; simp only [mul_assoc]
+ rw [mul'_char (r₂ * p) (r₁ * r) ⟨↑s₂ * p, hp⟩ ⟨↑s₁ * r, hr⟩ _ _ this]; clear this
have hsssp : ↑s₁ * ↑s₂' * ↑s_star * p_flat ∈ S :=
by
rw [mul_assoc, mul_assoc, ← mul_assoc ↑s₂', ← h₃, ← mul_assoc]
exact S.mul_mem hr (SetLike.coe_mem s_flat)
have : (⟨↑s₁ * r, hr⟩ : S) * s_flat = ⟨s₁ * s₂' * s_star * p_flat, hsssp⟩ :=
by
- ext
- simp only [[anonymous], Submonoid.coe_mul]
+ ext; simp only [[anonymous], Submonoid.coe_mul]
rw [mul_assoc, h₃, ← mul_assoc, ← mul_assoc]
- rw [this]
- clear this
+ rw [this]; clear this
rcases ore_left_cancel (p * p') (r₁' * ↑s_star) s₂ (by simp [← mul_assoc, h₂]) with ⟨s₂'', h₂''⟩
rw [← mul_assoc, mul_assoc r₂, OreLocalization.eq_of_num_factor_eq h₂'']
- norm_cast at hsssp⊢
- rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
+ norm_cast at hsssp⊢; rw [← OreLocalization.expand _ _ _ hsssp, ← mul_assoc]
apply OreLocalization.expand
#align ore_localization.mul OreLocalization.mul
-/
@@ -393,10 +353,8 @@ but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R} (hr : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r S), Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) r hr)) (OfNat.ofNat.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) 1 (One.toOfNat1.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instOneOreLocalization.{u1} R _inst_1 S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.div_eq_one' OreLocalization.div_eq_one'ₓ'. -/
@[simp]
-protected theorem div_eq_one' {r : R} (hr : r ∈ S) : r /ₒ ⟨r, hr⟩ = 1 :=
- by
- rw [OreLocalization.one_def, ore_div_eq_iff]
- exact ⟨⟨r, hr⟩, 1, by simp, by simp⟩
+protected theorem div_eq_one' {r : R} (hr : r ∈ S) : r /ₒ ⟨r, hr⟩ = 1 := by
+ rw [OreLocalization.one_def, ore_div_eq_iff]; exact ⟨⟨r, hr⟩, 1, by simp, by simp⟩
#align ore_localization.div_eq_one' OreLocalization.div_eq_one'
/- warning: ore_localization.div_eq_one -> OreLocalization.div_eq_one is a dubious translation:
@@ -444,9 +402,7 @@ protected theorem mul_assoc (x y z : R[S⁻¹]) : x * y * z = x * (y * z) :=
rcases ore_div_mul_char' r₂ r₃ s₂ s₃ with ⟨rb, sb, hb, hb'⟩; rw [hb']; clear hb'
rcases ore_condition rb sa with ⟨rc, sc, hc⟩
rw [ore_div_mul_char (r₁ * ra) r₃ (s₂ * sa) s₃ rc (sb * sc)
- (by
- simp only [Submonoid.coe_mul]
- assoc_rw [hb, hc])]
+ (by simp only [Submonoid.coe_mul]; assoc_rw [hb, hc])]
rw [mul_assoc, ← mul_assoc s₃]
symm; apply ore_div_mul_char
assoc_rw [hc, ← ha]; apply mul_assoc
@@ -679,8 +635,7 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
dsimp; constructor
· intro h
rw [numerator_hom_apply, numerator_hom_apply, ore_div_eq_iff] at h
- rcases h with ⟨u, v, h₁, h₂⟩
- dsimp at h₂
+ rcases h with ⟨u, v, h₁, h₂⟩; dsimp at h₂
rw [one_mul, one_mul] at h₂
subst h₂
use u
@@ -713,13 +668,10 @@ private theorem add''_char (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) (rb : R)
by
simp only [add'']
have ha := ore_eq (s₁ : R) s₂
- set! ra := ore_num (s₁ : R) s₂ with h
- rw [← h] at *
- clear h
+ set! ra := ore_num (s₁ : R) s₂ with h; rw [← h] at *; clear h
-- r tilde
- set! sa := ore_denom (s₁ : R) s₂ with h
- rw [← h] at *
- clear h
+ set! sa := ore_denom (s₁ : R) s₂ with h;
+ rw [← h] at *; clear h
-- s tilde
rcases ore_condition (sa : R) sb with ⟨rc, sc, hc⟩
-- s*, r*
@@ -727,16 +679,12 @@ private theorem add''_char (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) (rb : R)
rw [← mul_assoc, ← hb, mul_assoc, ← hc, ← mul_assoc, ← mul_assoc, ha]
rcases ore_left_cancel _ _ s₂ this with ⟨sd, hd⟩
-- s#
- symm
+ symm;
rw [ore_div_eq_iff]
- use sc * sd
- use rc * sd
+ use sc * sd; use rc * sd
constructor <;> simp only [Submonoid.coe_mul]
- · noncomm_ring
- assoc_rw [hd, hc]
- noncomm_ring
- · assoc_rw [hc]
- noncomm_ring
+ · noncomm_ring; assoc_rw [hd, hc]; noncomm_ring
+ · assoc_rw [hc]; noncomm_ring
attribute [local instance] OreLocalization.oreEqv
@@ -751,44 +699,30 @@ private def add' (r₂ : R) (s₂ : S) : R[S⁻¹] → R[S⁻¹] :=
--s~~, r~~
rcases ore_condition rb sc with ⟨rd, sd, hd⟩
-- s#, r#
- dsimp at *
+ dsimp at *;
rw [add''_char _ _ _ _ rc sc hc]
- have : ↑s₁ * ↑(sb * sd) = ↑s₂ * (rc * rd) :=
- by
- simp only [Submonoid.coe_mul]
- assoc_rw [hb', hd, hc]
- noncomm_ring
+ have : ↑s₁ * ↑(sb * sd) = ↑s₂ * (rc * rd) := by simp only [Submonoid.coe_mul];
+ assoc_rw [hb', hd, hc]; noncomm_ring
rw [add''_char _ _ _ _ (rc * rd : R) (sb * sd : S) this]
- simp only [Submonoid.coe_mul]
- assoc_rw [hb, hd]
+ simp only [Submonoid.coe_mul]; assoc_rw [hb, hd]
rw [← mul_assoc, ← add_mul, ore_div_eq_iff]
- use 1
- use rd
- constructor
+ use 1; use rd; constructor
· simp
- · simp only [mul_one, Submonoid.coe_one, Submonoid.coe_mul] at this⊢
- assoc_rw [hc, this]
+ · simp only [mul_one, Submonoid.coe_one, Submonoid.coe_mul] at this⊢; assoc_rw [hc, this]
private theorem add'_comm (r₁ r₂ : R) (s₁ s₂ : S) : add' r₁ s₁ (r₂ /ₒ s₂) = add' r₂ s₂ (r₁ /ₒ s₁) :=
by
simp only [add', ore_div, add'', Quotient.lift_mk, Quotient.eq']
- have hb := ore_eq (↑s₂) s₁
- set rb := ore_num (↑s₂) s₁ with h
+ have hb := ore_eq (↑s₂) s₁; set rb := ore_num (↑s₂) s₁ with h
-- r~~
- rw [← h]
- clear h
- set sb := ore_denom (↑s₂) s₁ with h
- rw [← h]
- clear h
+ rw [← h];
+ clear h; set sb := ore_denom (↑s₂) s₁ with h; rw [← h]; clear h
-- s~~
- have ha := ore_eq (↑s₁) s₂
+ have ha := ore_eq (↑s₁) s₂;
set ra := ore_num (↑s₁) s₂ with h
-- r~
- rw [← h]
- clear h
- set sa := ore_denom (↑s₁) s₂ with h
- rw [← h]
- clear h
+ rw [← h];
+ clear h; set sa := ore_denom (↑s₁) s₂ with h; rw [← h]; clear h
-- s~
rcases ore_condition ra sb with ⟨rc, sc, hc⟩
-- r#, s#
@@ -796,15 +730,11 @@ private theorem add'_comm (r₁ r₂ : R) (s₁ s₂ : S) : add' r₁ s₁ (r₂
rw [← mul_assoc, ← hb, mul_assoc, ← hc, ← mul_assoc, ← ha, mul_assoc]
rcases ore_left_cancel _ _ s₁ this with ⟨sd, hd⟩
-- s+
- use sc * sd
+ use sc * sd;
use rc * sd
- dsimp
- constructor
- · rw [add_mul, add_mul, add_comm]
- assoc_rw [← hd, hc]
- noncomm_ring
- · rw [mul_assoc, ← mul_assoc ↑sa, ← hd, hb]
- noncomm_ring
+ dsimp; constructor
+ · rw [add_mul, add_mul, add_comm]; assoc_rw [← hd, hc]; noncomm_ring
+ · rw [mul_assoc, ← mul_assoc ↑sa, ← hd, hb]; noncomm_ring
/-- The addition on the Ore localization. -/
private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
@@ -915,9 +845,7 @@ but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) s) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.zero_div_eq_zero OreLocalization.zero_div_eq_zeroₓ'. -/
@[simp]
-theorem zero_div_eq_zero (s : S) : 0 /ₒ s = 0 :=
- by
- rw [OreLocalization.zero_def, ore_div_eq_iff]
+theorem zero_div_eq_zero (s : S) : 0 /ₒ s = 0 := by rw [OreLocalization.zero_def, ore_div_eq_iff];
exact ⟨s, 1, by simp⟩
#align ore_localization.zero_div_eq_zero OreLocalization.zero_div_eq_zero
@@ -989,23 +917,14 @@ protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
induction' z using OreLocalization.ind with r₃ s₃
- rcases ore_div_add_char' r₂ r₃ s₂ s₃ with ⟨ra, sa, ha, q⟩
- rw [q]
- clear q
+ rcases ore_div_add_char' r₂ r₃ s₂ s₃ with ⟨ra, sa, ha, q⟩; rw [q]; clear q
rw [OreLocalization.expand' r₂ s₂ sa]
- rcases ore_div_mul_char' r₁ (r₂ * sa) s₁ (s₂ * sa) with ⟨rb, sb, hb, q⟩
- rw [q]
- clear q
- have hs₃rasb : ↑s₃ * (ra * sb) ∈ S :=
- by
- rw [← mul_assoc, ← ha]
- norm_cast
- apply SetLike.coe_mem
+ rcases ore_div_mul_char' r₁ (r₂ * sa) s₁ (s₂ * sa) with ⟨rb, sb, hb, q⟩; rw [q]; clear q
+ have hs₃rasb : ↑s₃ * (ra * sb) ∈ S := by rw [← mul_assoc, ← ha]; norm_cast; apply SetLike.coe_mem
rw [OreLocalization.expand _ _ _ hs₃rasb]
have ha' : ↑(s₂ * sa * sb) = ↑s₃ * (ra * sb) := by simp [ha, ← mul_assoc]
rw [← Subtype.coe_eq_of_eq_mk ha']
- rcases ore_div_mul_char' r₁ (r₃ * (ra * sb)) s₁ (s₂ * sa * sb) with ⟨rc, sc, hc, hc'⟩
- rw [hc']
+ rcases ore_div_mul_char' r₁ (r₃ * (ra * sb)) s₁ (s₂ * sa * sb) with ⟨rc, sc, hc, hc'⟩; rw [hc']
rw [ore_div_add_char (s₂ * sa * sb) (s₂ * sa * sb * sc) 1 sc (by simp)]
rw [OreLocalization.expand' (r₂ * ↑sa + r₃ * ra) (s₂ * sa) (sb * sc)]
conv_lhs =>
@@ -1013,8 +932,7 @@ protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z
skip
congr
rw [add_mul, S.coe_mul, ← mul_assoc, hb, ← mul_assoc, mul_assoc r₃, hc, mul_assoc, ← mul_add]
- rw [OreLocalization.mul_cancel']
- simp only [mul_one, Submonoid.coe_mul, mul_add, ← mul_assoc]
+ rw [OreLocalization.mul_cancel']; simp only [mul_one, Submonoid.coe_mul, mul_add, ← mul_assoc]
#align ore_localization.left_distrib OreLocalization.left_distrib
/- warning: ore_localization.right_distrib -> OreLocalization.right_distrib is a dubious translation:
@@ -1070,23 +988,16 @@ def universalHom : R[S⁻¹] →+* T :=
map_add' := fun x y => by
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
- rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨r₃, s₃, h₃, h₃'⟩
- rw [h₃']
- clear h₃'
+ rcases ore_div_add_char' r₁ r₂ s₁ s₂ with ⟨r₃, s₃, h₃, h₃'⟩; rw [h₃']; clear h₃'
simp only [universal_mul_hom_apply, [anonymous], RingHom.toMonoidHom_eq_coe,
MonoidHom.toFun_eq_coe]
simp only [mul_inv_rev, MonoidHom.map_mul, RingHom.map_add, RingHom.map_mul, Units.val_mul]
rw [add_mul, ← mul_assoc, mul_assoc (f r₁), hf, ← Units.val_mul]
simp only [mul_one, mul_right_inv, Units.val_one]
- congr 1
- rw [mul_assoc]
- congr 1
- norm_cast at h₃
- have h₃' := Subtype.coe_eq_of_eq_mk h₃
+ congr 1; rw [mul_assoc]; congr 1
+ norm_cast at h₃; have h₃' := Subtype.coe_eq_of_eq_mk h₃
rw [← Units.val_mul, ← mul_inv_rev, ← fS.map_mul, h₃']
- have hs₂r₃ : ↑s₂ * r₃ ∈ S := by
- rw [← h₃]
- exact SetLike.coe_mem (s₁ * s₃)
+ have hs₂r₃ : ↑s₂ * r₃ ∈ S := by rw [← h₃]; exact SetLike.coe_mem (s₁ * s₃)
apply (Units.inv_mul_cancel_left (fS s₂) _).symm.trans
conv_lhs =>
congr
@@ -1239,9 +1150,7 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
by_cases hr : r = 0
· simp [hr]
· by_cases ht : t = 0
- · exfalso
- apply nonZeroDivisors.coe_ne_zero ⟨_, hst⟩
- simp [ht, MulZeroClass.mul_zero]
+ · exfalso; apply nonZeroDivisors.coe_ne_zero ⟨_, hst⟩; simp [ht, MulZeroClass.mul_zero]
· simp only [hr, ht, [anonymous], dif_neg, not_false_iff, or_self_iff, mul_eq_zero]
apply OreLocalization.expand)
#align ore_localization.inv OreLocalization.inv
@@ -1270,11 +1179,8 @@ protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0) : x * x⁻¹ =
induction' x using OreLocalization.ind with r s
rw [OreLocalization.inv_def, OreLocalization.one_def]
by_cases hr : r = 0
- · exfalso
- apply h
- simp [hr]
- · simp [hr]
- apply OreLocalization.div_eq_one'
+ · exfalso; apply h; simp [hr]
+ · simp [hr]; apply OreLocalization.div_eq_one'
#align ore_localization.mul_inv_cancel OreLocalization.mul_inv_cancel
/- warning: ore_localization.inv_zero -> OreLocalization.inv_zero is a dubious translation:
@@ -1283,10 +1189,8 @@ lean 3 declaration is
but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))], Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Inv.inv.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.inv'.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))
Case conversion may be inaccurate. Consider using '#align ore_localization.inv_zero OreLocalization.inv_zeroₓ'. -/
-protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 :=
- by
- rw [OreLocalization.zero_def, OreLocalization.inv_def]
- simp
+protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
+ rw [OreLocalization.zero_def, OreLocalization.inv_def]; simp
#align ore_localization.inv_zero OreLocalization.inv_zero
instance : DivisionRing R[R⁰⁻¹] :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -146,10 +146,7 @@ protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r
#align ore_localization.ind OreLocalization.ind
/- warning: ore_localization.ore_div_eq_iff -> OreLocalization.oreDiv_eq_iff is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Iff (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (Exists.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (fun (u : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) => Exists.{succ u1} R (fun (v : R) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) u)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ v)) (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₂) ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) u)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) v)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Iff (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (Exists.{succ u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (u : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Exists.{succ u1} R (fun (v : R) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) u)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ v)) (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₂) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) u)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) v)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iffₓ'. -/
theorem oreDiv_eq_iff {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S)(v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
@@ -206,10 +203,7 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eq
/- warning: ore_localization.lift_expand -> OreLocalization.liftExpand is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} (P : R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> C), (forall (r : R) (t : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) S), Eq.{u2} C (P r s) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) ht))) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> C
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} (P : R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> C), (forall (r : R) (t : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) S), Eq.{u2} C (P r s) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) ht))) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> C
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.lift_expand OreLocalization.liftExpandₓ'. -/
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
under expansion on the right. -/
@@ -238,10 +232,7 @@ def liftExpand {C : Sort _} (P : R → S → C)
#align ore_localization.lift_expand OreLocalization.liftExpand
/- warning: ore_localization.lift_expand_of -> OreLocalization.liftExpand_of is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} {P : R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> C} {hP : forall (r : R) (t : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) S), Eq.{u2} C (P r s) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) t) ht))} (r : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{u2} C (OreLocalization.liftExpand.{u1, u2} R _inst_1 S _inst_2 C P hP (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (P r s)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} {P : R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> C} {hP : forall (r : R) (t : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) S), Eq.{u2} C (P r s) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r t) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) t) ht))} (r : R) (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{u2} C (OreLocalization.liftExpand.{u1, u2} R _inst_1 S _inst_2 C P hP (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (P r s)
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.lift_expand_of OreLocalization.liftExpand_ofₓ'. -/
@[simp]
theorem liftExpand_of {C : Sort _} {P : R → S → C}
@@ -251,10 +242,7 @@ theorem liftExpand_of {C : Sort _} {P : R → S → C}
#align ore_localization.lift_expand_of OreLocalization.liftExpand_of
/- warning: ore_localization.lift₂_expand -> OreLocalization.lift₂Expand is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} (P : R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> C), (forall (r₁ : R) (t₁ : R) (s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht₁ : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) t₁) S) (r₂ : R) (t₂ : R) (s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht₂ : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₂) t₂) S), Eq.{u2} C (P r₁ s₁ r₂ s₂) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ t₁) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) t₁) ht₁) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ t₂) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₂) t₂) ht₂))) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> C
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} (P : R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> C), (forall (r₁ : R) (t₁ : R) (s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht₁ : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) t₁) S) (r₂ : R) (t₂ : R) (s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht₂ : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₂) t₂) S), Eq.{u2} C (P r₁ s₁ r₂ s₂) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ t₁) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) t₁) ht₁) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ t₂) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₂) t₂) ht₂))) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> (OreLocalization.{u1} R _inst_1 S _inst_2) -> C
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.lift₂_expand OreLocalization.lift₂Expandₓ'. -/
/-- A version of `lift_expand` used to simultaneously lift functions with two arguments
in ``R[S⁻¹]`.-/
@@ -273,10 +261,7 @@ def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
#align ore_localization.lift₂_expand OreLocalization.lift₂Expand
/- warning: ore_localization.lift₂_expand_of -> OreLocalization.lift₂Expand_of is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} {P : R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> R -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> C} {hP : forall (r₁ : R) (t₁ : R) (s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht₁ : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) t₁) S) (r₂ : R) (t₂ : R) (s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (ht₂ : Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₂) t₂) S), Eq.{u2} C (P r₁ s₁ r₂ s₂) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ t₁) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) t₁) ht₁) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ t₂) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₂) t₂) ht₂))} (r₁ : R) (s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (r₂ : R) (s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{u2} C (OreLocalization.lift₂Expand.{u1, u2} R _inst_1 S _inst_2 C P hP (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (P r₁ s₁ r₂ s₂)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {C : Sort.{u2}} {P : R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> R -> (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) -> C} {hP : forall (r₁ : R) (t₁ : R) (s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht₁ : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) t₁) S) (r₂ : R) (t₂ : R) (s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (ht₂ : Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₂) t₂) S), Eq.{u2} C (P r₁ s₁ r₂ s₂) (P (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ t₁) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) t₁) ht₁) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ t₂) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₂) t₂) ht₂))} (r₁ : R) (s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (r₂ : R) (s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{u2} C (OreLocalization.lift₂Expand.{u1, u2} R _inst_1 S _inst_2 C P hP (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (P r₁ s₁ r₂ s₂)
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.lift₂_expand_of OreLocalization.lift₂Expand_ofₓ'. -/
@[simp]
theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
@@ -290,7 +275,6 @@ theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
private def mul' (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) : R[S⁻¹] :=
r₁ * oreNum r₂ s₁ /ₒ (s₂ * oreDenom r₂ s₁)
-#align ore_localization.mul' ore_localization.mul'
private theorem mul'_char (r₁ r₂ : R) (s₁ s₂ : S) (u : S) (v : R) (huv : r₂ * (u : R) = s₁ * v) :
mul' r₁ s₁ r₂ s₂ = r₁ * v /ₒ (s₂ * u) :=
@@ -311,7 +295,6 @@ private theorem mul'_char (r₁ r₂ : R) (s₁ s₂ : S) (u : S) (v : R) (huv :
simp only [mul_assoc]
· assoc_rw [h₃]
simp only [mul_assoc]
-#align ore_localization.mul'_char ore_localization.mul'_char
#print OreLocalization.mul /-
/-- The multiplication on the Ore localization of monoids. -/
@@ -378,10 +361,7 @@ theorem oreDiv_mul_char (r₁ r₂ : R) (s₁ s₂ : S) (r' : R) (s' : S) (huv :
#align ore_localization.ore_div_mul_char OreLocalization.oreDiv_mul_char
/- warning: ore_localization.ore_div_mul_char' -> OreLocalization.oreDivMulChar' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r₁ : R) (r₂ : R) (s₁ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (s₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), PSigma.{succ u1, succ u1} R (fun (r' : R) => PSigma.{succ u1, 0} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (fun (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s₁) r')) (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ s')))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (r₁ : R) (r₂ : R) (s₁ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (s₂ : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), PSigma.{succ u1, succ u1} R (fun (r' : R) => PSigma.{succ u1, 0} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (s' : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₂ (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s₁) r')) (Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s₁) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₂ s₂)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r') (HMul.hMul.{u1, u1, u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (instHMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.mul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) s₂ s')))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_mul_char' OreLocalization.oreDivMulChar'ₓ'. -/
/-- Another characterization lemma for the multiplication on the Ore localizaion delivering
Ore witnesses and conditions bundled in a sigma type. -/
@@ -513,10 +493,7 @@ protected theorem mul_cancel {r : R} {s t : S} : r /ₒ s * (s /ₒ t) = r /ₒ
#align ore_localization.mul_cancel OreLocalization.mul_cancel
/- warning: ore_localization.mul_cancel' -> OreLocalization.mul_cancel' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S} {t : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.hasMul.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s) r₂) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂) t)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r₁ : R} {r₂ : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)} {t : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (HMul.hMul.{u1, u1, u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.{u1} R _inst_1 S _inst_2) (instHMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMulOreLocalization.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r₁ s) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s) r₂) t)) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂) t)
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.mul_cancel' OreLocalization.mul_cancel'ₓ'. -/
@[simp]
protected theorem mul_cancel' {r₁ r₂ : R} {s t : S} : r₁ /ₒ s * (s * r₂ /ₒ t) = r₁ * r₂ /ₒ t := by
@@ -595,10 +572,7 @@ variable (hf : ∀ s : S, f s = fS s)
include f fS hf
/- warning: ore_localization.universal_mul_hom -> OreLocalization.universalMulHom is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom OreLocalization.universalMulHomₓ'. -/
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
@@ -630,10 +604,7 @@ def universalMulHom : R[S⁻¹] →* T
#align ore_localization.universal_mul_hom OreLocalization.universalMulHom
/- warning: ore_localization.universal_mul_hom_apply -> OreLocalization.universalMulHom_apply is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (MulOneClass.toHasMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (Inv.inv.{u2} (Units.{u2} T _inst_3) (Units.hasInv.{u2} T _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInv.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -641,20 +612,14 @@ theorem universalMulHom_apply {r : R} {s : S} :
#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_apply
/- warning: ore_localization.universal_mul_hom_commutes -> OreLocalization.universalMulHom_commutes is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutesₓ'. -/
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutes
/- warning: ore_localization.universal_mul_hom_unique -> OreLocalization.universalMulHom_unique is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) (φ : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_uniqueₓ'. -/
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
@@ -742,7 +707,6 @@ variable {R : Type _} [Semiring R] {S : Submonoid R} [OreSet S]
private def add'' (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) : R[S⁻¹] :=
(r₁ * oreDenom (s₁ : R) s₂ + r₂ * oreNum s₁ s₂) /ₒ (s₁ * oreDenom s₁ s₂)
-#align ore_localization.add'' ore_localization.add''
private theorem add''_char (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) (rb : R) (sb : S)
(hb : (s₁ : R) * sb = (s₂ : R) * rb) : add'' r₁ s₁ r₂ s₂ = (r₁ * sb + r₂ * rb) /ₒ (s₁ * sb) :=
@@ -773,7 +737,6 @@ private theorem add''_char (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) (rb : R)
noncomm_ring
· assoc_rw [hc]
noncomm_ring
-#align ore_localization.add''_char ore_localization.add''_char
attribute [local instance] OreLocalization.oreEqv
@@ -805,7 +768,6 @@ private def add' (r₂ : R) (s₂ : S) : R[S⁻¹] → R[S⁻¹] :=
· simp
· simp only [mul_one, Submonoid.coe_one, Submonoid.coe_mul] at this⊢
assoc_rw [hc, this]
-#align ore_localization.add' ore_localization.add'
private theorem add'_comm (r₁ r₂ : R) (s₁ s₂ : S) : add' r₁ s₁ (r₂ /ₒ s₂) = add' r₂ s₂ (r₁ /ₒ s₁) :=
by
@@ -843,7 +805,6 @@ private theorem add'_comm (r₁ r₂ : R) (s₁ s₂ : S) : add' r₁ s₁ (r₂
noncomm_ring
· rw [mul_assoc, ← mul_assoc ↑sa, ← hd, hb]
noncomm_ring
-#align ore_localization.add'_comm ore_localization.add'_comm
/-- The addition on the Ore localization. -/
private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
@@ -853,16 +814,12 @@ private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
induction' x using OreLocalization.ind with r₃ s₃
dsimp; rw [add'_comm, add'_comm r₂]
simp [(· /ₒ ·), Quotient.sound hyz])
-#align ore_localization.add ore_localization.add
instance : Add R[S⁻¹] :=
⟨add⟩
/- warning: ore_localization.ore_div_add_ore_div -> OreLocalization.oreDiv_add_oreDiv is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S} {s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r ((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 (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) x S))))) (OreLocalization.oreDenom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s) s'))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r' (OreLocalization.oreNum.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s) s'))) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s (OreLocalization.oreDenom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s) s')))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)} {s' : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)}, Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r (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 (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) S)) (OreLocalization.oreDenom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s) s'))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r' (OreLocalization.oreNum.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s) s'))) (HMul.hMul.{u1, u1, 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) x S)) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (instHMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s (OreLocalization.oreDenom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s) s')))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_ore_div OreLocalization.oreDiv_add_oreDivₓ'. -/
theorem oreDiv_add_oreDiv {r r' : R} {s s' : S} :
r /ₒ s + r' /ₒ s' = (r * oreDenom (s : R) s' + r' * oreNum s s') /ₒ (s * oreDenom s s') :=
@@ -870,10 +827,7 @@ theorem oreDiv_add_oreDiv {r r' : R} {s s' : S} :
#align ore_localization.ore_div_add_ore_div OreLocalization.oreDiv_add_oreDiv
/- warning: ore_localization.ore_div_add_char -> OreLocalization.oreDiv_add_char is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (rb : R) (sb : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s) ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) sb)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s') rb)) -> (Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) sb)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r' rb)) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s sb)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {r : R} {r' : R} (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (s' : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (rb : R) (sb : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) sb)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s') rb)) -> (Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) sb)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r' rb)) (HMul.hMul.{u1, u1, 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (instHMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s sb)))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_char OreLocalization.oreDiv_add_charₓ'. -/
/-- A characterization of the addition on the Ore localizaion, allowing for arbitrary Ore
numerator and Ore denominator. -/
@@ -883,10 +837,7 @@ theorem oreDiv_add_char {r r' : R} (s s' : S) (rb : R) (sb : S) (h : (s : R) * s
#align ore_localization.ore_div_add_char OreLocalization.oreDiv_add_char
/- warning: ore_localization.ore_div_add_char' -> OreLocalization.oreDivAddChar' is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (r : R) (r' : R) (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (s' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), PSigma.{succ u1, succ u1} R (fun (r'' : R) => PSigma.{succ u1, 0} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (fun (s'' : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s) ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s'')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s') r'')) (Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.hasAdd.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s'')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) r' r'')) (HMul.hMul.{u1, u1, u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (instHMul.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))))) S) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s s'')))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] (r : R) (r' : R) (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (s' : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), PSigma.{succ u1, succ u1} R (fun (r'' : R) => PSigma.{succ u1, 0} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (s'' : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => And (Eq.{succ u1} R (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s'')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s') r'')) (Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r' s')) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s'')) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) r' r'')) (HMul.hMul.{u1, u1, 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (instHMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.mul.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) s s'')))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.ore_div_add_char' OreLocalization.oreDivAddChar'ₓ'. -/
/-- Another characterization of the addition on the Ore localization, bundling up all witnesses
and conditions into a sigma type. -/
@@ -943,7 +894,6 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) :=
private def zero : R[S⁻¹] :=
0 /ₒ 1
-#align ore_localization.zero ore_localization.zero
instance : Zero R[S⁻¹] :=
⟨zero⟩
@@ -1104,10 +1054,7 @@ variable (hf : ∀ s : S, f s = fS s)
include f fS hf
/- warning: ore_localization.universal_hom -> OreLocalization.universalHom is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom OreLocalization.universalHomₓ'. -/
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
@@ -1158,10 +1105,7 @@ def universalHom : R[S⁻¹] →+* T :=
#align ore_localization.universal_hom OreLocalization.universalHom
/- warning: ore_localization.universal_hom_apply -> OreLocalization.universalHom_apply is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (Distrib.toHasMul.{u2} T (NonUnitalNonAssocSemiring.toDistrib.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (Inv.inv.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.hasInv.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInv.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -1169,20 +1113,14 @@ theorem universalHom_apply {r : R} {s : S} :
#align ore_localization.universal_hom_apply OreLocalization.universalHom_apply
/- warning: ore_localization.universal_hom_commutes -> OreLocalization.universalHom_commutes is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutesₓ'. -/
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutes
/- warning: ore_localization.universal_hom_unique -> OreLocalization.universalHom_unique is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) (φ : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
-but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_unique OreLocalization.universalHom_uniqueₓ'. -/
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
@@ -1312,10 +1250,7 @@ instance : Inv R[R⁰⁻¹] :=
⟨OreLocalization.inv⟩
/- warning: ore_localization.inv_def -> OreLocalization.inv_def is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R _inst_1)) (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))] {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))}, Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Inv.inv.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasInv.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3 r s)) (dite.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) (Classical.propDecidable (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))))))) (fun (hr : Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) => OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3)))) (fun (hr : Not (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))))))) => OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _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 (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) x (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))))) s) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1))) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)))) x (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) r (fun (_x : R) => eq_zero_of_ne_zero_of_mul_right_eq_zero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) _inst_4 r _x hr))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : Nontrivial.{u1} R] [_inst_3 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] [_inst_4 : NoZeroDivisors.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))] {r : R} {s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) x (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))}, Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Inv.inv.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.inv'.{u1} R _inst_1 _inst_2 _inst_3 _inst_4) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3 r s)) (dite.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (Classical.propDecidable (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (fun (hr : Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) => OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3))) (fun (hr : Not (Eq.{succ u1} R r (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) => OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) _inst_3 (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 (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) s) (Subtype.mk.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) x (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) r (fun (_x : R) => eq_zero_of_ne_zero_of_mul_right_eq_zero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) _inst_4 r _x hr))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ore_localization.inv_def OreLocalization.inv_defₓ'. -/
protected theorem inv_def {r : R} {s : R⁰} :
(r /ₒ s)⁻¹ =
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -568,7 +568,7 @@ def numeratorHom : R →* R[S⁻¹] where
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_applyₓ'. -/
theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
rfl
@@ -578,7 +578,7 @@ theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), IsUnit.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnitₓ'. -/
theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
⟨numeratorUnit s, rfl⟩
@@ -598,7 +598,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom OreLocalization.universalMulHomₓ'. -/
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
@@ -633,7 +633,7 @@ def universalMulHom : R[S⁻¹] →* T
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (MulOneClass.toHasMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (Inv.inv.{u2} (Units.{u2} T _inst_3) (Units.hasInv.{u2} T _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInv.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInv.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -644,7 +644,7 @@ theorem universalMulHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutesₓ'. -/
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
@@ -654,7 +654,7 @@ theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) (φ : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_uniqueₓ'. -/
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
@@ -1107,7 +1107,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom OreLocalization.universalHomₓ'. -/
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
@@ -1161,7 +1161,7 @@ def universalHom : R[S⁻¹] →+* T :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (Distrib.toHasMul.{u2} T (NonUnitalNonAssocSemiring.toDistrib.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (Inv.inv.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.hasInv.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInv.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInv.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -1172,7 +1172,7 @@ theorem universalHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) 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 _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutesₓ'. -/
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
@@ -1182,7 +1182,7 @@ theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) =
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) (φ : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_unique OreLocalization.universalHom_uniqueₓ'. -/
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
@@ -1243,7 +1243,7 @@ open nonZeroDivisors
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -1241,7 +1241,7 @@ open nonZeroDivisors
/- warning: ore_localization.numerator_hom_inj -> OreLocalization.numeratorHom_inj is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
@@ -1256,7 +1256,7 @@ theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom :
/- warning: ore_localization.nontrivial_of_non_zero_divisors -> OreLocalization.nontrivial_of_nonZeroDivisors is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))
but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))
Case conversion may be inaccurate. Consider using '#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisorsₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -1201,7 +1201,7 @@ variable {R : Type _} [Ring R] {S : Submonoid R} [OreSet S]
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)
Case conversion may be inaccurate. Consider using '#align ore_localization.neg OreLocalization.negₓ'. -/
/-- Negation on the Ore localization is defined via negation on the numerator. -/
protected def neg : R[S⁻¹] → R[S⁻¹] :=
@@ -1216,7 +1216,7 @@ instance : Neg R[S⁻¹] :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (r : R) (s : 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 _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 _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) S), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R _inst_1))))) r) s)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (r : R) (s : Subtype.{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 _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 (Neg.neg.{u1} R (Ring.toNeg.{u1} R _inst_1) r) s)
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (r : R) (s : 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 (Ring.toSemiring.{u1} R _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 (Neg.neg.{u1} R (Ring.toNeg.{u1} R _inst_1) r) s)
Case conversion may be inaccurate. Consider using '#align ore_localization.neg_def OreLocalization.neg_defₓ'. -/
@[simp]
protected theorem neg_def (r : R) (s : S) : -(r /ₒ s) = -r /ₒ s :=
@@ -1227,7 +1227,7 @@ protected theorem neg_def (r : R) (s : S) : -(r /ₒ s) = -r /ₒ s :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (x : OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasAdd.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) x) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) 0 (OfNat.mk.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) 0 (Zero.zero.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) x) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (HAdd.hAdd.{u1, u1, u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (instHAdd.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) x) x) (OfNat.ofNat.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) 0 (Zero.toOfNat0.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instZeroOreLocalizationToMonoidToMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.add_left_neg OreLocalization.add_left_negₓ'. -/
protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
induction' x using OreLocalization.ind with r s <;> simp
@@ -1243,7 +1243,7 @@ open nonZeroDivisors
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
@@ -1258,7 +1258,7 @@ theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] [_inst_3 : Nontrivial.{u1} R], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (PartialOrder.toPreorder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Nontrivial.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))
Case conversion may be inaccurate. Consider using '#align ore_localization.nontrivial_of_non_zero_divisors OreLocalization.nontrivial_of_nonZeroDivisorsₓ'. -/
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
⟨⟨0, 1, fun h => by
mathlib commit https://github.com/leanprover-community/mathlib/commit/2651125b48fc5c170ab1111afd0817c903b1fc6c
@@ -633,7 +633,7 @@ def universalMulHom : R[S⁻¹] →* T
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (MulOneClass.toHasMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (Inv.inv.{u2} (Units.{u2} T _inst_3) (Units.hasInv.{u2} T _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInvUnits.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInv.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -1161,7 +1161,7 @@ def universalHom : R[S⁻¹] →+* T :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (Distrib.toHasMul.{u2} T (NonUnitalNonAssocSemiring.toDistrib.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (Inv.inv.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.hasInv.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInvUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInv.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -1214,7 +1214,7 @@ instance : Neg R[S⁻¹] :=
/- warning: ore_localization.neg_def -> OreLocalization.neg_def is a dubious translation:
lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (r : R) (s : 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 _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 _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) S), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) r) s)
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S] (r : R) (s : 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 _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 _inst_1))))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) S), Eq.{succ u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.hasNeg.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2 (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R _inst_1))))) r) s)
but is expected to have type
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S] (r : R) (s : Subtype.{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 _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))) x S)), Eq.{succ u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Neg.neg.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring.{u1} R _inst_1 S _inst_2) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 r s)) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2 (Neg.neg.{u1} R (Ring.toNeg.{u1} R _inst_1) r) s)
Case conversion may be inaccurate. Consider using '#align ore_localization.neg_def OreLocalization.neg_defₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -568,7 +568,7 @@ def numeratorHom : R →* R[S⁻¹] where
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_applyₓ'. -/
theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
rfl
@@ -578,7 +578,7 @@ theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), IsUnit.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnitₓ'. -/
theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
⟨numeratorUnit s, rfl⟩
@@ -598,7 +598,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom OreLocalization.universalMulHomₓ'. -/
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
@@ -633,7 +633,7 @@ def universalMulHom : R[S⁻¹] →* T
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (MulOneClass.toHasMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (Inv.inv.{u2} (Units.{u2} T _inst_3) (Units.hasInv.{u2} T _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInvUnits.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInvUnits.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -644,7 +644,7 @@ theorem universalMulHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutesₓ'. -/
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
@@ -654,7 +654,7 @@ theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) (φ : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_uniqueₓ'. -/
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
@@ -1107,7 +1107,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom OreLocalization.universalHomₓ'. -/
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
@@ -1161,7 +1161,7 @@ def universalHom : R[S⁻¹] →+* T :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (Distrib.toHasMul.{u2} T (NonUnitalNonAssocSemiring.toDistrib.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (Inv.inv.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.hasInv.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInvUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInvUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -1172,7 +1172,7 @@ theorem universalHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutesₓ'. -/
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
@@ -1182,7 +1182,7 @@ theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) =
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) (φ : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_unique OreLocalization.universalHom_uniqueₓ'. -/
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
@@ -1243,7 +1243,7 @@ open nonZeroDivisors
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -1303,7 +1303,7 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
· by_cases ht : t = 0
· exfalso
apply nonZeroDivisors.coe_ne_zero ⟨_, hst⟩
- simp [ht, mul_zero]
+ simp [ht, MulZeroClass.mul_zero]
· simp only [hr, ht, [anonymous], dif_neg, not_false_iff, or_self_iff, mul_eq_zero]
apply OreLocalization.expand)
#align ore_localization.inv OreLocalization.inv
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -568,7 +568,7 @@ def numeratorHom : R →* R[S⁻¹] where
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {r : R}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) r) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r (OfNat.ofNat.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.one.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S))))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_apply OreLocalization.numeratorHom_applyₓ'. -/
theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
rfl
@@ -578,7 +578,7 @@ theorem numeratorHom_apply {r : R} : numeratorHom r = r /ₒ (1 : S) :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), IsUnit.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_is_unit OreLocalization.numerator_isUnitₓ'. -/
theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
⟨numeratorUnit s, rfl⟩
@@ -598,7 +598,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)), (forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) -> (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom OreLocalization.universalMulHomₓ'. -/
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
@@ -633,7 +633,7 @@ def universalMulHom : R[S⁻¹] →* T
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (MulOneClass.toHasMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (Inv.inv.{u2} (Units.{u2} T _inst_3) (Units.hasInv.{u2} T _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInvUnits.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) {r : R} {s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R _inst_1 S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r) (Units.val.{u1} T _inst_3 (Inv.inv.{u1} (Units.{u1} T _inst_3) (Units.instInvUnits.{u1} T _inst_3) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_apply OreLocalization.universalMulHom_applyₓ'. -/
theorem universalMulHom_apply {r : R} {s : S} :
universalMulHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -644,7 +644,7 @@ theorem universalMulHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (hf : forall (s : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) S)) s)) (Units.val.{u2} T _inst_3 (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (fun (_x : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) => Units.{u2} T _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (MulOneClass.toMul.{u1} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S)) (MulOneClass.toMul.{u2} (Units.{u2} T _inst_3) (Units.instMulOneClassUnits.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)) (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (Subtype.{succ u1} R (fun (x : R) => Membership.mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S)) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.instMulOneClassUnits.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u1} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)))) (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))) R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toMul.{u2} T (Monoid.toMulOneClass.{u2} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3) (MonoidHom.monoidHomClass.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_commutes OreLocalization.universalMulHom_commutesₓ'. -/
theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_mul_hom_apply]
@@ -654,7 +654,7 @@ theorem universalMulHom_commutes {r : R} : universalMulHom f fS hf (numeratorHom
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Monoid.{u1} R] {S : Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u1} R _inst_1 S] {T : Type.{u2}} [_inst_3 : Monoid.{u2} T] (f : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f ((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 (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) R (coeSubtype.{succ u1} R (fun (x : R) => Membership.Mem.{u1, u1} R (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T _inst_3) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T _inst_3) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T _inst_3) T (coeBase.{succ u2, succ u2} (Units.{u2} T _inst_3) T (Units.hasCoe.{u2} T _inst_3)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) -> (Units.{u2} T _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) R (Submonoid.setLike.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) S) (Units.{u2} T _inst_3) (Submonoid.toMulOneClass.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1) S) (Units.mulOneClass.{u2} T _inst_3)) fS s))) (φ : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) => (OreLocalization.{u1} R _inst_1 S _inst_2) -> T) (MonoidHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) => R -> (OreLocalization.{u1} R _inst_1 S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2))) (OreLocalization.numeratorHom.{u1} R _inst_1 S _inst_2) r)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) (fun (_x : MonoidHom.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) => R -> T) (MonoidHom.hasCoeToFun.{u1, u2} R T (Monoid.toMulOneClass.{u1} R _inst_1) (Monoid.toMulOneClass.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (OreLocalization.{u1} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R _inst_1 S _inst_2) (OreLocalization.monoid.{u1} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u2} T _inst_3)) φ (OreLocalization.universalMulHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Monoid.{u2} R] {S : Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)} [_inst_2 : OreLocalization.OreSet.{u2} R _inst_1 S] {T : Type.{u1}} [_inst_3 : Monoid.{u1} T] (f : MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (hf : forall (s : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f (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 (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) S)) s)) (Units.val.{u1} T _inst_3 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (fun (_x : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) => Units.{u1} T _inst_3) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (MulOneClass.toMul.{u2} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S)) (MulOneClass.toMul.{u1} (Units.{u1} T _inst_3) (Units.instMulOneClassUnits.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)) (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (Subtype.{succ u2} R (fun (x : R) => Membership.mem.{u2, u2} R (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) R (Submonoid.instSetLikeSubmonoid.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1))) x S)) (Units.{u1} T _inst_3) (Submonoid.toMulOneClass.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1) S) (Units.instMulOneClassUnits.{u1} T _inst_3)))) fS s))) (φ : MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) (fun (_x : OreLocalization.{u2} R _inst_1 S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R _inst_1 S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R _inst_1 S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))) R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R _inst_1 S _inst_2) (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2))))) (OreLocalization.numeratorHom.{u2} R _inst_1 S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R _inst_1)) (MulOneClass.toMul.{u1} T (Monoid.toMulOneClass.{u1} T _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)) R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3) (MonoidHom.monoidHomClass.{u2, u1} R T (Monoid.toMulOneClass.{u2} R _inst_1) (Monoid.toMulOneClass.{u1} T _inst_3)))) f r)) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (OreLocalization.{u2} R _inst_1 S _inst_2) T (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R _inst_1 S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R _inst_1 S _inst_2)) (Monoid.toMulOneClass.{u1} T _inst_3)) φ (OreLocalization.universalMulHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_mul_hom_unique OreLocalization.universalMulHom_uniqueₓ'. -/
/-- The universal morphism `universal_mul_hom` is unique. -/
theorem universalMulHom_unique (φ : R[S⁻¹] →* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
@@ -1107,7 +1107,7 @@ include f fS hf
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))), (forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) -> (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom OreLocalization.universalHomₓ'. -/
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
units of `T`, to a ring homomorphism `R[S⁻¹] →+* T`. This extends the construction on
@@ -1161,7 +1161,7 @@ def universalHom : R[S⁻¹] →+* T :=
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R} {s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u2, u2, u2} T T T (instHMul.{u2} T (Distrib.toHasMul.{u2} T (NonUnitalNonAssocSemiring.toDistrib.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (Inv.inv.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.hasInv.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInvUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) {r : R} {s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf) (OreLocalization.oreDiv.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2 r s)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) T ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) r) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (Inv.inv.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instInvUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_apply OreLocalization.universalHom_applyₓ'. -/
theorem universalHom_apply {r : R} {s : S} :
universalHom f fS hf (r /ₒ s) = f r * ((fS s)⁻¹ : Units T) :=
@@ -1172,7 +1172,7 @@ theorem universalHom_apply {r : R} {s : S} :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) {r : R}, Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
+ forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) S)) s)) (Units.val.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (fun (_x : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) => Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S)) (MulOneClass.toMul.{u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} (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 _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S)) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.instMulOneClassUnits.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) fS s))) {r : R}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} T (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3) (RingHom.instRingHomClassRingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3))))) f r)
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_commutes OreLocalization.universalHom_commutesₓ'. -/
theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) = f r := by
simp [numerator_hom_apply, universal_hom_apply]
@@ -1182,7 +1182,7 @@ theorem universalHom_commutes {r : R} : universalHom f fS hf (numeratorHom r) =
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Semiring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S] {T : Type.{u2}} [_inst_3 : Semiring.{u2} T] (f : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fS : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (hf : forall (s : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f ((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 (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) R (coeSubtype.{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 _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) x S))))) s)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (coeBase.{succ u2, succ u2} (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) T (Units.hasCoe.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (fun (_x : MonoidHom.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) => (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) -> (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) (MonoidHom.hasCoeToFun.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) R (Submonoid.setLike.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))))) S) (Units.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3))) (Submonoid.toMulOneClass.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) S) (Units.mulOneClass.{u2} T (MonoidWithZero.toMonoid.{u2} T (Semiring.toMonoidWithZero.{u2} T _inst_3)))) fS s))) (φ : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)), (forall (r : R), Eq.{succ u2} T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) -> T) (RingHom.hasCoeToFun.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) => R -> (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.monoid.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) r)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) (fun (_x : RingHom.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) => R -> T) (RingHom.hasCoeToFun.{u1, u2} R T (Semiring.toNonAssocSemiring.{u1} R _inst_1) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) f r)) -> (Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) S _inst_2) (OreLocalization.semiring.{u1} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u2} T _inst_3)) φ (OreLocalization.universalHom.{u1, u2} R _inst_1 S _inst_2 T _inst_3 f fS hf))
but is expected to have type
- forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
+ forall {R : Type.{u2}} [_inst_1 : Semiring.{u2} R] {S : Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))} [_inst_2 : OreLocalization.OreSet.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S] {T : Type.{u1}} [_inst_3 : Semiring.{u1} T] (f : RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (fS : MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (hf : forall (s : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f (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 _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) S)) s)) (Units.val.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (fun (_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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) => Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MulOneClass.toMul.{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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S)) (MulOneClass.toMul.{u1} (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))) (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (MonoidHom.monoidHomClass.{u2, u1} (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 _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) R (Submonoid.instSetLikeSubmonoid.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))))) x S)) (Units.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3))) (Submonoid.toMulOneClass.{u2} R (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) S) (Units.instMulOneClassUnits.{u1} T (MonoidWithZero.toMonoid.{u1} T (Semiring.toMonoidWithZero.{u1} T _inst_3)))))) fS s))) (φ : RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)), (forall (r : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (fun (_x : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonUnitalNonAssocSemiring.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) φ (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (MulOneClass.toMul.{u2} R (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) (MulOneClass.toMul.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))) R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} R (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (Monoid.toMulOneClass.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1))) (Monoid.toMulOneClass.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2))))) (OreLocalization.numeratorHom.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) r)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => T) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} T (Semiring.toNonAssocSemiring.{u1} T _inst_3)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3) (RingHom.instRingHomClassRingHom.{u2, u1} R T (Semiring.toNonAssocSemiring.{u2} R _inst_1) (Semiring.toNonAssocSemiring.{u1} T _inst_3))))) f r)) -> (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) T (Semiring.toNonAssocSemiring.{u2} (OreLocalization.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)) S _inst_2) (OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero.{u2} R _inst_1 S _inst_2)) (Semiring.toNonAssocSemiring.{u1} T _inst_3)) φ (OreLocalization.universalHom.{u2, u1} R _inst_1 S _inst_2 T _inst_3 f fS hf))
Case conversion may be inaccurate. Consider using '#align ore_localization.universal_hom_unique OreLocalization.universalHom_uniqueₓ'. -/
theorem universalHom_unique (φ : R[S⁻¹] →+* T) (huniv : ∀ r : R, φ (numeratorHom r) = f r) :
φ = universalHom f fS hf :=
@@ -1243,7 +1243,7 @@ open nonZeroDivisors
lean 3 declaration is
forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (Ring.toMonoid.{u1} R _inst_1) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (SetLike.partialOrder.{u1, u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1)))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (fun (_x : MonoidHom.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) => R -> (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)) (MonoidHom.hasCoeToFun.{u1, u1} R (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (Monoid.toMulOneClass.{u1} R (Ring.toMonoid.{u1} R _inst_1)) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2) (OreLocalization.monoid.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2))) (OreLocalization.numeratorHom.{u1} R (Ring.toMonoid.{u1} R _inst_1) S _inst_2)))
but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
+ forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {S : Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))} [_inst_2 : OreLocalization.OreSet.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S], (LE.le.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (Preorder.toLE.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{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 _inst_1))))) (Submonoid.instCompleteLatticeSubmonoid.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))))))) S (nonZeroDivisors.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) -> (Function.Injective.{succ u1, succ u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (MulOneClass.toMul.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))) R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)) (MonoidHom.monoidHomClass.{u1, u1} R (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (Monoid.toMulOneClass.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Monoid.toMulOneClass.{u1} (OreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2) (OreLocalization.instMonoidOreLocalization.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2))))) (OreLocalization.numeratorHom.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) S _inst_2)))
Case conversion may be inaccurate. Consider using '#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_injₓ'. -/
theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom : R → R[S⁻¹]) :=
fun r₁ r₂ h =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -636,11 +636,11 @@ protected theorem add_assoc (x y z : R[S⁻¹]) : x + y + z = x + (y + z) := by
← OreLocalization.expand', Subtype.coe_eq_of_eq_mk ha, ← OreLocalization.expand]
apply OreLocalization.expand'
· rcases oreCondition (sd : R) (sa * sc) with ⟨re, _, _⟩
- · simp_rw [← Submonoid.coe_mul] at hb hc hd
- rw [← mul_assoc, Subtype.coe_eq_of_eq_mk hc]
- rw [← OreLocalization.expand, Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ←
- OreLocalization.expand, Subtype.coe_eq_of_eq_mk hb]
- apply OreLocalization.expand
+ simp_rw [← Submonoid.coe_mul] at hb hc hd
+ rw [← mul_assoc, Subtype.coe_eq_of_eq_mk hc]
+ rw [← OreLocalization.expand, Subtype.coe_eq_of_eq_mk hd, ← mul_assoc, ←
+ OreLocalization.expand, Subtype.coe_eq_of_eq_mk hb]
+ apply OreLocalization.expand
#align ore_localization.add_assoc OreLocalization.add_assoc
private def zero : R[S⁻¹] :=
NNRat.cast
(#11203)
Define the canonical coercion from the nonnegative rationals to any division semiring.
From LeanAPAP
@@ -928,6 +928,7 @@ instance divisionRing : DivisionRing R[R⁰⁻¹] where
__ := inv'
mul_inv_cancel := OreLocalization.mul_inv_cancel
inv_zero := OreLocalization.inv_zero
+ nnqsmul := _
qsmul := _
end DivisionRing
NNRat.cast
(#12360)
This is the parts of the diff of #11203 which don't mention NNRat.cast
.
where
notation.qsmul := _
instead of qsmul := qsmulRec _
to make the instances more robust to definition changes.qsmulRec
.qsmul
before ratCast_def
in instance declarations.rat_smul
to qsmul
.@@ -922,13 +922,13 @@ protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
simp
#align ore_localization.inv_zero OreLocalization.inv_zero
-instance divisionRing : DivisionRing R[R⁰⁻¹] :=
- { OreLocalization.nontrivial,
- OreLocalization.inv',
- OreLocalization.ring with
- mul_inv_cancel := OreLocalization.mul_inv_cancel
- inv_zero := OreLocalization.inv_zero
- qsmul := qsmulRec _ }
+instance divisionRing : DivisionRing R[R⁰⁻¹] where
+ __ := ring
+ __ := nontrivial
+ __ := inv'
+ mul_inv_cancel := OreLocalization.mul_inv_cancel
+ inv_zero := OreLocalization.inv_zero
+ qsmul := _
end DivisionRing
@@ -378,21 +378,22 @@ variable (hf : ∀ s : S, f s = fS s)
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
to a morphism `R[S⁻¹] →* T`. -/
-def universalMulHom : R[S⁻¹] →* T
- where
- -- Porting note: `simp only []` required for beta reductions
+def universalMulHom : R[S⁻¹] →* T where
+ -- Porting note(#12129): additional beta reduction needed
toFun x :=
x.liftExpand (fun r s => f r * ((fS s)⁻¹ : Units T)) fun r t s ht => by
- simp only []
+ beta_reduce
have : (fS ⟨s * t, ht⟩ : T) = fS s * f t := by
simp only [← hf, MonoidHom.map_mul]
conv_rhs =>
rw [MonoidHom.map_mul, ← mul_one (f r), ← Units.val_one, ← mul_left_inv (fS s)]
rw [Units.val_mul, ← mul_assoc, mul_assoc _ (fS s : T), ← this, mul_assoc]
simp only [mul_one, Units.mul_inv]
- map_one' := by simp only []; rw [OreLocalization.one_def, liftExpand_of]; simp
+ map_one' := by beta_reduce; rw [OreLocalization.one_def, liftExpand_of]; simp
map_mul' x y := by
- simp only []
+ -- Porting note: `simp only []` required, not just for beta reductions
+ beta_reduce
+ simp only [] -- TODO more!
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
rcases oreDivMulChar' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'
@@ -822,8 +823,8 @@ variable {R : Type*} [Ring R] {S : Submonoid R} [OreSet S]
/-- Negation on the Ore localization is defined via negation on the numerator. -/
protected def neg : R[S⁻¹] → R[S⁻¹] :=
liftExpand (fun (r : R) (s : S) => -r /ₒ s) fun r t s ht => by
- -- Porting note: `simp only []` required for beta reductions
- simp only []
+ -- Porting note(#12129): additional beta reduction needed
+ beta_reduce
rw [neg_mul_eq_neg_mul, ← OreLocalization.expand]
#align ore_localization.neg OreLocalization.neg
@@ -95,7 +95,6 @@ def oreDiv (r : R) (s : S) : R[S⁻¹] :=
Quotient.mk' (r, s)
#align ore_localization.ore_div OreLocalization.oreDiv
--- mathport name: «expr /ₒ »
@[inherit_doc]
infixl:70 " /ₒ " => oreDiv
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)
@@ -80,7 +80,6 @@ namespace OreLocalization
section Monoid
variable {R : Type*} [Monoid R] {S : Submonoid R}
-
variable (R S) [OreSet S]
@[inherit_doc OreLocalization]
@@ -375,9 +374,7 @@ theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
section UMP
variable {T : Type*} [Monoid T]
-
variable (f : R →* T) (fS : S →* Units T)
-
variable (hf : ∀ s : S, f s = fS s)
/-- The universal lift from a morphism `R →* T`, which maps elements of `S` to units of `T`,
@@ -746,9 +743,7 @@ instance instSemiringOreLocalization : Semiring R[S⁻¹] :=
section UMP
variable {T : Type*} [Semiring T]
-
variable (f : R →+* T) (fS : S →* Units T)
-
variable (hf : ∀ s : S, f s = fS s)
/-- The universal lift from a ring homomorphism `f : R →+* T`, which maps elements in `S` to
@@ -932,7 +932,8 @@ instance divisionRing : DivisionRing R[R⁰⁻¹] :=
OreLocalization.inv',
OreLocalization.ring with
mul_inv_cancel := OreLocalization.mul_inv_cancel
- inv_zero := OreLocalization.inv_zero }
+ inv_zero := OreLocalization.inv_zero
+ qsmul := qsmulRec _ }
end DivisionRing
nsmul
and zsmul
to default automatically (#6262)
This PR removes the default values for nsmul
and zsmul
, forcing the user to populate them manually.
The previous behavior can be obtained by writing nsmul := nsmulRec
and zsmul := zsmulRec
, which is now in the docstring for these fields.
The motivation here is to make it more obvious when module diamonds are being introduced, or at least where they might be hiding; you can now simply search for nsmulRec
in the source code.
Arguably we should do the same thing for intCast
, natCast
, pow
, and zpow
too, but diamonds are less common in those fields, so I'll leave them to a subsequent PR.
Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -679,7 +679,8 @@ instance instAddCommMonoidOreLocalization : AddCommMonoid R[S⁻¹] :=
add_assoc := OreLocalization.add_assoc
zero := zero
zero_add := OreLocalization.zero_add
- add_zero := fun x => by rw [OreLocalization.add_comm, OreLocalization.zero_add] }
+ add_zero := fun x => by rw [OreLocalization.add_comm, OreLocalization.zero_add]
+ nsmul := nsmulRec }
protected theorem zero_mul (x : R[S⁻¹]) : 0 * x = 0 := by
induction' x using OreLocalization.ind with r s
@@ -847,7 +848,8 @@ protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
instance ring : Ring R[S⁻¹] :=
{ OreLocalization.instSemiringOreLocalization,
OreLocalization.instNegOreLocalization with
- add_left_neg := OreLocalization.add_left_neg }
+ add_left_neg := OreLocalization.add_left_neg
+ zsmul := zsmulRec }
open nonZeroDivisors
@@ -129,7 +129,7 @@ those factors expand to equal elements of `R`. -/
protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t = r' * t) :
r₁ * r * r₂ /ₒ s = r₁ * r' * r₂ /ₒ s := by
rcases oreCondition r₂ t with ⟨r₂', t', hr₂⟩
- -- Porting note: todo: use `assoc_rw`?
+ -- Porting note (#11215): TODO: use `assoc_rw`?
calc
r₁ * r * r₂ /ₒ s = r₁ * r * r₂ * t' /ₒ (s * t') := OreLocalization.expand (r₁ * r * r₂) s t' _
_ = r₁ * r * (r₂ * t') /ₒ (s * t') := by simp [← mul_assoc]
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -871,7 +871,7 @@ noncomputable section DivisionRing
open nonZeroDivisors
-open Classical
+open scoped Classical
variable {R : Type*} [Ring R] [Nontrivial R] [OreSet R⁰]
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -55,7 +55,7 @@ def oreEqv : Setoid (R × S) where
rcases oreCondition (s : R) s' with ⟨r₂, s₂, h₁⟩
rcases oreCondition r₂ u with ⟨r₃, s₃, h₂⟩
have : (s : R) * ((v : R) * r₃) = (s : R) * (s₂ * s₃) := by
- -- porting note: the proof used `assoc_rw`
+ -- Porting note: the proof used `assoc_rw`
rw [← mul_assoc _ (s₂ : R), h₁, mul_assoc, h₂, ← mul_assoc, ← hsu, mul_assoc]
rcases ore_left_cancel (v * r₃) (s₂ * s₃) s this with ⟨w, hw⟩
refine ⟨s₂ * s₃ * w, u * r₃ * w, ?_, ?_⟩ <;> simp only [Submonoid.coe_mul, ← hw]
@@ -129,7 +129,7 @@ those factors expand to equal elements of `R`. -/
protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t = r' * t) :
r₁ * r * r₂ /ₒ s = r₁ * r' * r₂ /ₒ s := by
rcases oreCondition r₂ t with ⟨r₂', t', hr₂⟩
- -- porting note: todo: use `assoc_rw`?
+ -- Porting note: todo: use `assoc_rw`?
calc
r₁ * r * r₂ /ₒ s = r₁ * r * r₂ * t' /ₒ (s * t') := OreLocalization.expand (r₁ * r * r₂) s t' _
_ = r₁ * r * (r₂ * t') /ₒ (s * t') := by simp [← mul_assoc]
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>
@@ -151,8 +151,7 @@ def liftExpand {C : Sort*} (P : R → S → C)
have s₁vS : (s₁ : R) * v ∈ S := by
rw [← hs₂, ← S.coe_mul]
exact SetLike.coe_mem (s₂ * u)
- replace hs₂ : s₂ * u = ⟨(s₁ : R) * v, s₁vS⟩
- · ext; simp [hs₂]
+ replace hs₂ : s₂ * u = ⟨(s₁ : R) * v, s₁vS⟩ := by ext; simp [hs₂]
rw [hP r₁ v s₁ s₁vS, hP r₂ u s₂ (by norm_cast; rwa [hs₂]), hr₂]
simp only [← hs₂]; rfl
#align ore_localization.lift_expand OreLocalization.liftExpand
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer, Kevin Klinge
-/
import Mathlib.GroupTheory.MonoidLocalization
-import Mathlib.RingTheory.NonZeroDivisors
+import Mathlib.Algebra.GroupWithZero.NonZeroDivisors
import Mathlib.RingTheory.OreLocalization.OreSet
import Mathlib.Tactic.NoncommRing
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>
@@ -463,21 +463,16 @@ protected def localizationMap : S.LocalizationMap R[S⁻¹]
induction' z using OreLocalization.ind with r s
use (r, s); dsimp
rw [numeratorHom_apply, numeratorHom_apply]; simp
- eq_iff_exists' r₁ r₂ := by
- dsimp; constructor
- · intro h
- rw [numeratorHom_apply, numeratorHom_apply, oreDiv_eq_iff] at h
- rcases h with ⟨u, v, h₁, h₂⟩
- dsimp at h₂
- rw [one_mul, one_mul] at h₂
- subst h₂
- use u
- simpa only [mul_comm] using h₁.symm
- · rintro ⟨s, h⟩
- rw [numeratorHom_apply, numeratorHom_apply, oreDiv_eq_iff]
- refine' ⟨s, s, _, _⟩
- · simpa [mul_comm] using h.symm
- · simp [one_mul]
+ exists_of_eq r₁ r₂ := by
+ dsimp
+ intro h
+ rw [numeratorHom_apply, numeratorHom_apply, oreDiv_eq_iff] at h
+ rcases h with ⟨u, v, h₁, h₂⟩
+ dsimp at h₂
+ rw [one_mul, one_mul] at h₂
+ subst h₂
+ use u
+ simpa only [mul_comm] using h₁.symm
#align ore_localization.localization_map OreLocalization.localizationMap
/-- If `R` is commutative, Ore localization and monoid localization are isomorphic. -/
@@ -736,7 +736,8 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z := by
rw [OreLocalization.expand' r₁ s₁ sa]
rw [OreLocalization.expand r₂ s₂ ra (by rw [← ha]; apply SetLike.coe_mem)]
rw [← Subtype.coe_eq_of_eq_mk ha]
- repeat' rw [oreDiv_mul_oreDiv]; simp only [add_mul, add_oreDiv]
+ repeat rw [oreDiv_mul_oreDiv]
+ simp only [add_mul, add_oreDiv]
#align ore_localization.right_distrib OreLocalization.right_distrib
instance instSemiringOreLocalization : Semiring R[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.
@@ -44,7 +44,7 @@ open OreLocalization
namespace OreLocalization
-variable (R : Type _) [Monoid R] (S : Submonoid R) [OreSet S]
+variable (R : Type*) [Monoid R] (S : Submonoid R) [OreSet S]
/-- The setoid on `R × S` used for the Ore localization. -/
def oreEqv : Setoid (R × S) where
@@ -71,7 +71,7 @@ def oreEqv : Setoid (R × S) where
end OreLocalization
/-- The ore localization of a monoid and a submonoid fulfilling the ore condition. -/
-def OreLocalization (R : Type _) [Monoid R] (S : Submonoid R) [OreSet S] :=
+def OreLocalization (R : Type*) [Monoid R] (S : Submonoid R) [OreSet S] :=
Quotient (OreLocalization.oreEqv R S)
#align ore_localization OreLocalization
@@ -79,7 +79,7 @@ namespace OreLocalization
section Monoid
-variable {R : Type _} [Monoid R] {S : Submonoid R}
+variable {R : Type*} [Monoid R] {S : Submonoid R}
variable (R S) [OreSet S]
@@ -144,7 +144,7 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
under expansion on the right. -/
-def liftExpand {C : Sort _} (P : R → S → C)
+def liftExpand {C : Sort*} (P : R → S → C)
(hP : ∀ (r t : R) (s : S) (ht : (s : R) * t ∈ S), P r s = P (r * t) ⟨s * t, ht⟩) : R[S⁻¹] → C :=
Quotient.lift (fun p : R × S => P p.1 p.2) fun (r₁, s₁) (r₂, s₂) ⟨u, v, hr₂, hs₂⟩ => by
dsimp at *
@@ -158,7 +158,7 @@ def liftExpand {C : Sort _} (P : R → S → C)
#align ore_localization.lift_expand OreLocalization.liftExpand
@[simp]
-theorem liftExpand_of {C : Sort _} {P : R → S → C}
+theorem liftExpand_of {C : Sort*} {P : R → S → C}
{hP : ∀ (r t : R) (s : S) (ht : (s : R) * t ∈ S), P r s = P (r * t) ⟨s * t, ht⟩} (r : R)
(s : S) : liftExpand P hP (r /ₒ s) = P r s :=
rfl
@@ -166,7 +166,7 @@ theorem liftExpand_of {C : Sort _} {P : R → S → C}
/-- A version of `liftExpand` used to simultaneously lift functions with two arguments
in `R[S⁻¹]`. -/
-def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
+def lift₂Expand {C : Sort*} (P : R → S → R → S → C)
(hP :
∀ (r₁ t₁ : R) (s₁ : S) (ht₁ : (s₁ : R) * t₁ ∈ S) (r₂ t₂ : R) (s₂ : S)
(ht₂ : (s₂ : R) * t₂ ∈ S),
@@ -183,7 +183,7 @@ def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
#align ore_localization.lift₂_expand OreLocalization.lift₂Expand
@[simp]
-theorem lift₂Expand_of {C : Sort _} {P : R → S → R → S → C}
+theorem lift₂Expand_of {C : Sort*} {P : R → S → R → S → C}
{hP :
∀ (r₁ t₁ : R) (s₁ : S) (ht₁ : (s₁ : R) * t₁ ∈ S) (r₂ t₂ : R) (s₂ : S)
(ht₂ : (s₂ : R) * t₂ ∈ S),
@@ -375,7 +375,7 @@ theorem numerator_isUnit (s : S) : IsUnit (numeratorHom (s : R) : R[S⁻¹]) :=
section UMP
-variable {T : Type _} [Monoid T]
+variable {T : Type*} [Monoid T]
variable (f : R →* T) (fS : S →* Units T)
@@ -436,7 +436,7 @@ end Monoid
section CommMonoid
-variable {R : Type _} [CommMonoid R] {S : Submonoid R} [OreSet S]
+variable {R : Type*} [CommMonoid R] {S : Submonoid R} [OreSet S]
theorem oreDiv_mul_oreDiv_comm {r₁ r₂ : R} {s₁ s₂ : S} :
r₁ /ₒ s₁ * (r₂ /ₒ s₂) = r₁ * r₂ /ₒ (s₁ * s₂) := by
@@ -489,7 +489,7 @@ end CommMonoid
section Semiring
-variable {R : Type _} [Semiring R] {S : Submonoid R} [OreSet S]
+variable {R : Type*} [Semiring R] {S : Submonoid R} [OreSet S]
private def add'' (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) : R[S⁻¹] :=
(r₁ * oreDenom (s₁ : R) s₂ + r₂ * oreNum (s₁ : R) s₂) /ₒ (s₁ * oreDenom (s₁ : R) s₂)
@@ -749,7 +749,7 @@ instance instSemiringOreLocalization : Semiring R[S⁻¹] :=
section UMP
-variable {T : Type _} [Semiring T]
+variable {T : Type*} [Semiring T]
variable (f : R →+* T) (fS : S →* Units T)
@@ -827,7 +827,7 @@ end Semiring
section Ring
-variable {R : Type _} [Ring R] {S : Submonoid R} [OreSet S]
+variable {R : Type*} [Ring R] {S : Submonoid R} [OreSet S]
/-- Negation on the Ore localization is defined via negation on the numerator. -/
protected def neg : R[S⁻¹] → R[S⁻¹] :=
@@ -878,7 +878,7 @@ open nonZeroDivisors
open Classical
-variable {R : Type _} [Ring R] [Nontrivial R] [OreSet R⁰]
+variable {R : Type*} [Ring R] [Nontrivial R] [OreSet R⁰]
instance nontrivial : Nontrivial R[R⁰⁻¹] :=
nontrivial_of_nonZeroDivisors (refl R⁰)
Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.
This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.
There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.
This was implemented by running Mathlib against a modified Lean that appended _ᾰ
to all automatically generated names, and fixing everything.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -246,7 +246,7 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
apply OreLocalization.expand
#align ore_localization.mul OreLocalization.mul
-instance : Mul R[S⁻¹] :=
+instance instMulOreLocalization : Mul R[S⁻¹] :=
⟨OreLocalization.mul⟩
theorem oreDiv_mul_oreDiv {r₁ r₂ : R} {s₁ s₂ : S} :
@@ -268,7 +268,7 @@ def oreDivMulChar' (r₁ r₂ : R) (s₁ s₂ : S) :
⟨oreNum r₂ s₁, oreDenom r₂ s₁, ore_eq r₂ s₁, oreDiv_mul_oreDiv⟩
#align ore_localization.ore_div_mul_char' OreLocalization.oreDivMulChar'
-instance : One R[S⁻¹] :=
+instance instOneOreLocalization : One R[S⁻¹] :=
⟨1 /ₒ 1⟩
protected theorem one_def : (1 : R[S⁻¹]) = 1 /ₒ 1 :=
@@ -316,7 +316,7 @@ protected theorem mul_assoc (x y z : R[S⁻¹]) : x * y * z = x * (y * z) := by
rw [mul_assoc, hc, ← mul_assoc (b := ra), ← ha, mul_assoc]
#align ore_localization.mul_assoc OreLocalization.mul_assoc
-instance : Monoid R[S⁻¹] :=
+instance instMonoidOreLocalization : Monoid R[S⁻¹] :=
{ OreLocalization.instMulOreLocalization,
OreLocalization.instOneOreLocalization with
one_mul := OreLocalization.one_mul
@@ -595,7 +595,7 @@ private def add : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] := fun x =>
-- Porting note: `Quotient.mk'` required
simp [(· /ₒ ·), Quotient.mk', Quotient.sound hyz])
-instance : Add R[S⁻¹] :=
+instance instAddOreLocalization : Add R[S⁻¹] :=
⟨add⟩
theorem oreDiv_add_oreDiv {r r' : R} {s s' : S} :
@@ -679,8 +679,8 @@ protected theorem add_comm (x y : R[S⁻¹]) : x + y = y + x := by
change add' _ _ (_ /ₒ _) = _; apply add'_comm
#align ore_localization.add_comm OreLocalization.add_comm
-instance : AddCommMonoid R[S⁻¹] :=
- { OreLocalization.instAddOreLocalizationToMonoidToMonoidWithZero with
+instance instAddCommMonoidOreLocalization : AddCommMonoid R[S⁻¹] :=
+ { OreLocalization.instAddOreLocalization with
add_comm := OreLocalization.add_comm
add_assoc := OreLocalization.add_assoc
zero := zero
@@ -739,8 +739,8 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z := by
repeat' rw [oreDiv_mul_oreDiv]; simp only [add_mul, add_oreDiv]
#align ore_localization.right_distrib OreLocalization.right_distrib
-instance : Semiring R[S⁻¹] :=
- { OreLocalization.instAddCommMonoidOreLocalizationToMonoidToMonoidWithZero,
+instance instSemiringOreLocalization : Semiring R[S⁻¹] :=
+ { OreLocalization.instAddCommMonoidOreLocalization,
OreLocalization.instMonoidOreLocalization with
zero_mul := OreLocalization.zero_mul
mul_zero := OreLocalization.mul_zero
@@ -837,7 +837,7 @@ protected def neg : R[S⁻¹] → R[S⁻¹] :=
rw [neg_mul_eq_neg_mul, ← OreLocalization.expand]
#align ore_localization.neg OreLocalization.neg
-instance : Neg R[S⁻¹] :=
+instance instNegOreLocalization : Neg R[S⁻¹] :=
⟨OreLocalization.neg⟩
@[simp]
@@ -850,8 +850,8 @@ protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
#align ore_localization.add_left_neg OreLocalization.add_left_neg
instance ring : Ring R[S⁻¹] :=
- { OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero,
- OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring with
+ { OreLocalization.instSemiringOreLocalization,
+ OreLocalization.instNegOreLocalization with
add_left_neg := OreLocalization.add_left_neg }
open nonZeroDivisors
@@ -2,17 +2,14 @@
Copyright (c) 2022 Jakob von Raumer. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jakob von Raumer, Kevin Klinge
-
-! This file was ported from Lean 3 source module ring_theory.ore_localization.basic
-! leanprover-community/mathlib commit 861a26926586cd46ff80264d121cdb6fa0e35cc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.GroupTheory.MonoidLocalization
import Mathlib.RingTheory.NonZeroDivisors
import Mathlib.RingTheory.OreLocalization.OreSet
import Mathlib.Tactic.NoncommRing
+#align_import ring_theory.ore_localization.basic from "leanprover-community/mathlib"@"861a26926586cd46ff80264d121cdb6fa0e35cc1"
+
/-!
# Localization over right Ore sets.
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
@@ -735,7 +735,7 @@ theorem right_distrib (x y z : R[S⁻¹]) : (x + y) * z = x * z + y * z := by
induction' x using OreLocalization.ind with r₁ s₁
induction' y using OreLocalization.ind with r₂ s₂
induction' z using OreLocalization.ind with r₃ s₃
- rcases oreDivAddChar' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
+ rcases oreDivAddChar' r₁ r₂ s₁ s₂ with ⟨ra, sa, ha, ha'⟩; rw [ha']; clear ha'; norm_cast at ha
rw [OreLocalization.expand' r₁ s₁ sa]
rw [OreLocalization.expand r₂ s₂ ra (by rw [← ha]; apply SetLike.coe_mem)]
rw [← Subtype.coe_eq_of_eq_mk ha]
@@ -787,7 +787,7 @@ def universalHom : R[S⁻¹] →+* T :=
congr 1
rw [mul_assoc]
congr 1
- norm_cast at h₃
+ norm_cast at h₃
have h₃' := Subtype.coe_eq_of_eq_mk h₃
rw [← Units.val_mul, ← mul_inv_rev, ← fS.map_mul, h₃']
have hs₂r₃ : ↑s₂ * r₃ ∈ S := by
I wrote a script to find lines that contain an odd number of backticks
@@ -168,7 +168,7 @@ theorem liftExpand_of {C : Sort _} {P : R → S → C}
#align ore_localization.lift_expand_of OreLocalization.liftExpand_of
/-- A version of `liftExpand` used to simultaneously lift functions with two arguments
-in ``R[S⁻¹]`.-/
+in `R[S⁻¹]`. -/
def lift₂Expand {C : Sort _} (P : R → S → R → S → C)
(hP :
∀ (r₁ t₁ : R) (s₁ : S) (ht₁ : (s₁ : R) * t₁ ∈ S) (r₂ t₂ : R) (s₂ : S)
@@ -122,7 +122,7 @@ protected theorem expand (r : R) (s : S) (t : R) (hst : (s : R) * t ∈ S) :
refine' ⟨s, t * s, _, _⟩ <;> dsimp <;> rw [mul_assoc]
#align ore_localization.expand OreLocalization.expand
-/-- A fraction is equal to its expansion by an factor from s. -/
+/-- A fraction is equal to its expansion by a factor from s. -/
protected theorem expand' (r : R) (s s' : S) : r /ₒ s = r * s' /ₒ (s * s') :=
OreLocalization.expand r s s' (by norm_cast; apply SetLike.coe_mem)
#align ore_localization.expand' OreLocalization.expand'
@@ -111,7 +111,7 @@ protected theorem ind {β : R[S⁻¹] → Prop} (c : ∀ (r : R) (s : S), β (r
#align ore_localization.ind OreLocalization.ind
theorem oreDiv_eq_iff {r₁ r₂ : R} {s₁ s₂ : S} :
- r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S)(v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
+ r₁ /ₒ s₁ = r₂ /ₒ s₂ ↔ ∃ (u : S) (v : R), r₂ * u = r₁ * v ∧ (s₂ : R) * u = s₁ * v :=
Quotient.eq''
#align ore_localization.ore_div_eq_iff OreLocalization.oreDiv_eq_iff
@@ -26,7 +26,7 @@ localization at `R - {0}` results in a division ring.
## Notations
Introduces the notation `R[S⁻¹]` for the Ore localization of a monoid `R` at a right Ore
-subset `S`. Also defines a new heterogeneos division notation `r /ₒ s` for a numerator `r : R` and
+subset `S`. Also defines a new heterogeneous division notation `r /ₒ s` for a numerator `r : R` and
a denominator `s : S`.
## References
noncomm_ring
tactic (#4804)
This aims to be a faithful implementation of mathlib3's noncomm_ring
tactic.
@@ -11,6 +11,7 @@ Authors: Jakob von Raumer, Kevin Klinge
import Mathlib.GroupTheory.MonoidLocalization
import Mathlib.RingTheory.NonZeroDivisors
import Mathlib.RingTheory.OreLocalization.OreSet
+import Mathlib.Tactic.NoncommRing
/-!
@@ -521,11 +522,11 @@ private theorem add''_char (r₁ : R) (s₁ : S) (r₂ : R) (s₂ : S) (rb : R)
use sc * sd
use rc * sd
constructor <;> simp only [Submonoid.coe_mul]
- · simp only [right_distrib, mul_assoc]
+ · noncomm_ring
rw [← mul_assoc (a := rb), hd, ← mul_assoc (a := (sa : R)), hc]
- simp only [mul_assoc]
+ noncomm_ring
· rw [mul_assoc (a := (s₁ : R)), ← mul_assoc (a := (sa : R)), hc]
- simp only [mul_assoc]
+ noncomm_ring
attribute [local instance] OreLocalization.oreEqv
@@ -85,9 +85,9 @@ variable {R : Type _} [Monoid R] {S : Submonoid R}
variable (R S) [OreSet S]
--- mathport name: «expr [ ⁻¹]»
@[inherit_doc OreLocalization]
-notation:1075 R "[" S "⁻¹]" => OreLocalization R S
+scoped syntax:1075 term noWs atomic("[" term "⁻¹" noWs "]") : term
+macro_rules | `($R[$S⁻¹]) => ``(OreLocalization $R $S)
attribute [local instance] oreEqv
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -226,18 +226,15 @@ protected def mul : R[S⁻¹] → R[S⁻¹] → R[S⁻¹] :=
dsimp at h₂
rcases oreCondition r (s₂' * s_star) with ⟨p_flat, s_flat, h₃⟩
simp only [S.coe_mul] at h₃
- have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) :=
- by
+ have : r₁ * r * s_flat = s₂ * p * (p' * p_flat) := by
rw [← mul_assoc, ← h₂, ← h₁, mul_assoc, h₃]
simp only [mul_assoc]
rw [mul'_char (r₂ * p) (r₁ * r) ⟨↑s₂ * p, hp⟩ ⟨↑s₁ * r, hr⟩ _ _ this]
clear this
- have hsssp : ↑s₁ * ↑s₂' * ↑s_star * p_flat ∈ S :=
- by
+ have hsssp : ↑s₁ * ↑s₂' * ↑s_star * p_flat ∈ S := by
rw [mul_assoc, mul_assoc, ← mul_assoc (s₂' : R), ← h₃, ← mul_assoc]
exact S.mul_mem hr (SetLike.coe_mem s_flat)
- have : (⟨↑s₁ * r, hr⟩ : S) * s_flat = ⟨s₁ * s₂' * s_star * p_flat, hsssp⟩ :=
- by
+ have : (⟨↑s₁ * r, hr⟩ : S) * s_flat = ⟨s₁ * s₂' * s_star * p_flat, hsssp⟩ := by
ext
simp only [Submonoid.coe_mul]
rw [mul_assoc, h₃, ← mul_assoc, ← mul_assoc]
@@ -713,8 +710,7 @@ protected theorem left_distrib (x y z : R[S⁻¹]) : x * (y + z) = x * y + x * z
rcases oreDivMulChar' r₁ (r₂ * sa) s₁ (s₂ * sa) with ⟨rb, sb, hb, q⟩
rw [q]
clear q
- have hs₃rasb : ↑s₃ * (ra * sb) ∈ S :=
- by
+ have hs₃rasb : ↑s₃ * (ra * sb) ∈ S := by
rw [← mul_assoc, ← ha]
norm_cast
apply SetLike.coe_mem
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -142,7 +142,6 @@ protected theorem eq_of_num_factor_eq {r r' r₁ r₂ : R} {s t : S} (h : r * t
_ = r₁ * r' * (r₂ * t') /ₒ (s * t') := by rw [hr₂]
_ = r₁ * r' * r₂ * t' /ₒ (s * t') := by simp [← mul_assoc]
_ = r₁ * r' * r₂ /ₒ s := (OreLocalization.expand _ _ _ _).symm
-
#align ore_localization.eq_of_num_factor_eq OreLocalization.eq_of_num_factor_eq
/-- A function or predicate over `R` and `S` can be lifted to `R[S⁻¹]` if it is invariant
@@ -856,7 +856,7 @@ protected theorem add_left_neg (x : R[S⁻¹]) : -x + x = 0 := by
induction' x using OreLocalization.ind with r s; simp
#align ore_localization.add_left_neg OreLocalization.add_left_neg
-instance : Ring R[S⁻¹] :=
+instance ring : Ring R[S⁻¹] :=
{ OreLocalization.instSemiringOreLocalizationToMonoidToMonoidWithZero,
OreLocalization.instNegOreLocalizationToMonoidToMonoidWithZeroToSemiring with
add_left_neg := OreLocalization.add_left_neg }
@@ -868,7 +868,7 @@ theorem numeratorHom_inj (hS : S ≤ R⁰) : Function.Injective (numeratorHom :
rw [numeratorHom_apply, numeratorHom_apply, oreDiv_eq_iff] at h
rcases h with ⟨u, v, h₁, h₂⟩
simp only [S.coe_one, one_mul] at h₂
- rwa [← h₂, mul_cancel_right_mem_non_zero_divisor (hS (SetLike.coe_mem u)), eq_comm] at h₁
+ rwa [← h₂, mul_cancel_right_mem_nonZeroDivisors (hS (SetLike.coe_mem u)), eq_comm] at h₁
#align ore_localization.numerator_hom_inj OreLocalization.numeratorHom_inj
theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) : Nontrivial R[S⁻¹] :=
@@ -887,7 +887,7 @@ open Classical
variable {R : Type _} [Ring R] [Nontrivial R] [OreSet R⁰]
-instance : Nontrivial R[R⁰⁻¹] :=
+instance nontrivial : Nontrivial R[R⁰⁻¹] :=
nontrivial_of_nonZeroDivisors (refl R⁰)
variable [NoZeroDivisors R]
@@ -911,7 +911,7 @@ protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
apply OreLocalization.expand)
#align ore_localization.inv OreLocalization.inv
-instance : Inv R[R⁰⁻¹] :=
+instance inv' : Inv R[R⁰⁻¹] :=
⟨OreLocalization.inv⟩
protected theorem inv_def {r : R} {s : R⁰} :
@@ -937,10 +937,10 @@ protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
simp
#align ore_localization.inv_zero OreLocalization.inv_zero
-instance : DivisionRing R[R⁰⁻¹] :=
- { OreLocalization.instNontrivialOreLocalizationToMonoidToMonoidWithZeroToSemiringNonZeroDivisors,
- OreLocalization.instInvOreLocalizationToMonoidToMonoidWithZeroToSemiringNonZeroDivisors,
- OreLocalization.instRingOreLocalizationToMonoidToMonoidWithZeroToSemiring with
+instance divisionRing : DivisionRing R[R⁰⁻¹] :=
+ { OreLocalization.nontrivial,
+ OreLocalization.inv',
+ OreLocalization.ring with
mul_inv_cancel := OreLocalization.mul_inv_cancel
inv_zero := OreLocalization.inv_zero }
The unported dependencies are