analysis.normed.group.quotient
⟷
Mathlib.Analysis.Normed.Group.Quotient
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -530,7 +530,7 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
calc
‖f m‖ ≤ c * ‖m‖ := hc m
_ ≤ c * (‖mk' S m‖ + ε / c) := ((mul_lt_mul_left hcpos).mpr hmnorm).le
- _ = c * ‖mk' S m‖ + ε := by rw [mul_add, mul_div_cancel' _ hcpos.ne.symm] }
+ _ = c * ‖mk' S m‖ + ε := by rw [mul_add, mul_div_cancel₀ _ hcpos.ne.symm] }
#align normed_add_group_hom.lift NormedAddGroupHom.lift
-/
@@ -615,7 +615,7 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
_ ≤ c * (‖S.normed_mk x‖ + ε / c) := ((mul_le_mul_left _).mpr Hx.le)
_ = c * _ + ε := _
· exact_mod_cast hc
- · rw [mul_add, mul_div_cancel']; exact_mod_cast hc.ne'
+ · rw [mul_add, mul_div_cancel₀]; exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -229,7 +229,7 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
· calc
(∀ ε > (0 : ℝ), ∃ r ∈ (fun x => ‖m + x‖) '' (S : Set M), r < ε) ↔
∀ ε > 0, ∃ x ∈ S, ‖m + x‖ < ε :=
- by simp [Set.bex_image_iff]
+ by simp [Set.exists_mem_image]
_ ↔ ∀ ε > 0, ∃ x ∈ S, ‖m + -x‖ < ε := _
_ ↔ ∀ ε > 0, ∃ x ∈ S, x ∈ Metric.ball m ε := by
simp [dist_eq_norm, ← sub_eq_add_neg, norm_sub_rev]
@@ -265,7 +265,7 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
by
obtain ⟨n : M, hn : mk' S n = mk' S m, hn' : ‖n‖ < ‖mk' S m‖ + ε⟩ :=
norm_mk_lt (QuotientAddGroup.mk' S m) hε
- erw [eq_comm, QuotientAddGroup.eq] at hn
+ erw [eq_comm, QuotientAddGroup.eq] at hn
use-m + n, hn
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
@@ -300,7 +300,7 @@ theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
- (h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
+ (h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
#align norm_zero_eq_zero norm_mk_eq_zero
-/
@@ -311,12 +311,12 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
intro U
constructor
· intro U_in
- rw [← (mk' S).map_zero] at U_in
+ rw [← (mk' S).map_zero] at U_in
have := preimage_nhds_coinduced U_in
rcases metric.mem_nhds_iff.mp this with ⟨ε, ε_pos, H⟩
use ε / 2, half_pos ε_pos
intro x x_in
- dsimp at x_in
+ dsimp at x_in
rcases norm_mk_lt x (half_pos ε_pos) with ⟨y, rfl, ry⟩
apply H
rw [ball_zero_eq]
@@ -326,7 +326,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
have : mk' S '' ball (0 : M) ε ⊆ {x | ‖x‖ < ε} :=
by
rintro _ ⟨x, x_in, rfl⟩
- rw [mem_ball_zero_iff] at x_in
+ rw [mem_ball_zero_iff] at x_in
exact lt_of_le_of_lt (quotient_norm_mk_le S x) x_in
apply Filter.mem_of_superset _ (Set.Subset.trans this h)
clear h U this
@@ -392,7 +392,7 @@ noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M
eq_of_dist_eq_zero := by
rintro ⟨m⟩ ⟨m'⟩ (h : ‖mk' S m - mk' S m'‖ = 0)
erw [← (mk' S).map_sub, quotient_norm_eq_zero_iff, ‹IsClosed _›.closure_eq, ←
- QuotientAddGroup.eq_iff_sub_mem] at h
+ QuotientAddGroup.eq_iff_sub_mem] at h
exact h }
#align add_subgroup.normed_add_comm_group_quotient AddSubgroup.normedAddCommGroupQuotient
-/
@@ -464,20 +464,20 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
‖y‖ + min ε (1 / 2) / (1 - min ε (1 / 2)) * ‖y‖ =
‖y‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) :=
by ring
- rw [hrw] at hlt
+ rw [hrw] at hlt
have hm0 : ‖m‖ ≠ 0 := by
intro h0
have hnorm := quotient_norm_mk_le S m
- rw [h0, hm] at hnorm
+ rw [h0, hm] at hnorm
replace hnorm := le_antisymm hnorm (norm_nonneg _)
simpa [hnorm] using hy
replace hlt := (div_lt_div_right (lt_of_le_of_ne (norm_nonneg m) hm0.symm)).2 hlt
- simp only [hm0, div_self, Ne.def, not_false_iff] at hlt
+ simp only [hm0, div_self, Ne.def, not_false_iff] at hlt
have hrw₁ :
‖y‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) / ‖m‖ =
‖y‖ / ‖m‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) :=
by ring
- rw [hrw₁] at hlt
+ rw [hrw₁] at hlt
replace hlt := (inv_pos_lt_iff_one_lt_mul (lt_trans (div_pos hδpos hδ) (lt_one_add _))).2 hlt
suffices ‖S.normed_mk‖ ≥ 1 - min ε (1 / 2) by exact sub_le_iff_le_add.mp this
calc
@@ -498,7 +498,7 @@ theorem norm_trivial_quotient_mk (S : AddSubgroup M)
by
rw [S.ker_normed_mk]
exact Set.mem_of_eq_of_mem h trivial
- rw [ker_normed_mk] at hker
+ rw [ker_normed_mk] at hker
simp only [(quotient_norm_eq_zero_iff S x).mpr hker, normed_mk.apply, MulZeroClass.zero_mul]
#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mk
-/
@@ -694,7 +694,7 @@ instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [Norm
have :=
(nhds_basis_ball.tendsto_iff nhds_basis_ball).mp
((@Real.uniformContinuous_const_mul ‖k‖).Continuous.Tendsto ‖x‖) ε hε
- simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
+ simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
rcases this with ⟨δ, hδ, h⟩
obtain ⟨a, rfl, ha⟩ := Submodule.Quotient.norm_mk_lt x hδ
specialize h ‖a‖ ⟨by linarith, by linarith [Submodule.Quotient.norm_mk_le S a]⟩
@@ -735,11 +735,11 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
have :=
((nhds_basis_ball.prod_nhds nhds_basis_ball).tendsto_iffₓ nhds_basis_ball).mp
(real.continuous_mul.tendsto (‖x‖, ‖y‖)) ε hε
- simp only [Set.mem_prod, mem_ball, and_imp, Prod.forall, exists_prop, Prod.exists] at this
+ simp only [Set.mem_prod, mem_ball, and_imp, Prod.forall, exists_prop, Prod.exists] at this
rcases this with ⟨ε₁, ε₂, ⟨h₁, h₂⟩, h⟩
obtain ⟨⟨a, rfl, ha⟩, ⟨b, rfl, hb⟩⟩ := Ideal.Quotient.norm_mk_lt x h₁,
Ideal.Quotient.norm_mk_lt y h₂
- simp only [dist, abs_sub_lt_iff] at h
+ simp only [dist, abs_sub_lt_iff] at h
specialize
h ‖a‖ ‖b‖ ⟨by linarith, by linarith [Ideal.Quotient.norm_mk_le I a]⟩
⟨by linarith, by linarith [Ideal.Quotient.norm_mk_le I b]⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -122,7 +122,7 @@ theorem image_norm_nonempty {S : AddSubgroup M} :
∀ x : M ⧸ S, (norm '' {m | mk' S m = x}).Nonempty :=
by
rintro ⟨m⟩
- rw [Set.nonempty_image_iff]
+ rw [Set.image_nonempty]
use m
change mk' S m = _
rfl
@@ -240,7 +240,7 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
· use 0
rintro _ ⟨x, x_in, rfl⟩
apply norm_nonneg
- rw [Set.nonempty_image_iff]
+ rw [Set.image_nonempty]
use 0, S.zero_mem
#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iff
-/
@@ -569,7 +569,7 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
obtain ⟨m, rfl⟩ := hquot.surjective n
have nonemp : ((fun m' => ‖m + m'‖) '' f.ker).Nonempty :=
by
- rw [Set.nonempty_image_iff]
+ rw [Set.image_nonempty]
exact ⟨0, f.ker.zero_mem⟩
rcases Real.lt_sInf_add_pos nonemp hε with
⟨_, ⟨⟨x, hx, rfl⟩, H : ‖m + x‖ < Inf ((fun m' : M => ‖m + m'‖) '' f.ker) + ε⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
-/
-import Mathbin.Analysis.NormedSpace.Basic
-import Mathbin.Analysis.Normed.Group.Hom
-import Mathbin.RingTheory.Ideal.QuotientOperations
+import Analysis.NormedSpace.Basic
+import Analysis.Normed.Group.Hom
+import RingTheory.Ideal.QuotientOperations
#align_import analysis.normed.group.quotient from "leanprover-community/mathlib"@"7d34004e19699895c13c86b78ae62bbaea0bc893"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -729,7 +729,7 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
Submodule.Quotient.seminormedAddCommGroup
I with
mul_comm := mul_comm
- norm_mul := fun x y =>
+ norm_hMul := fun x y =>
le_of_forall_pos_le_add fun ε hε =>
by
have :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -266,7 +266,7 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
obtain ⟨n : M, hn : mk' S n = mk' S m, hn' : ‖n‖ < ‖mk' S m‖ + ε⟩ :=
norm_mk_lt (QuotientAddGroup.mk' S m) hε
erw [eq_comm, QuotientAddGroup.eq] at hn
- use -m + n, hn
+ use-m + n, hn
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
-
-! This file was ported from Lean 3 source module analysis.normed.group.quotient
-! leanprover-community/mathlib commit 7d34004e19699895c13c86b78ae62bbaea0bc893
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.NormedSpace.Basic
import Mathbin.Analysis.Normed.Group.Hom
import Mathbin.RingTheory.Ideal.QuotientOperations
+#align_import analysis.normed.group.quotient from "leanprover-community/mathlib"@"7d34004e19699895c13c86b78ae62bbaea0bc893"
+
/-!
# Quotients of seminormed groups
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -113,11 +113,14 @@ noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
#align norm_on_quotient normOnQuotient
-/
+#print AddSubgroup.quotient_norm_eq /-
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
‖x‖ = sInf (norm '' {m : M | (m : M ⧸ S) = x}) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
+-/
+#print image_norm_nonempty /-
theorem image_norm_nonempty {S : AddSubgroup M} :
∀ x : M ⧸ S, (norm '' {m | mk' S m = x}).Nonempty :=
by
@@ -127,6 +130,7 @@ theorem image_norm_nonempty {S : AddSubgroup M} :
change mk' S m = _
rfl
#align image_norm_nonempty image_norm_nonempty
+-/
#print bddBelow_image_norm /-
theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
@@ -137,6 +141,7 @@ theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
#align bdd_below_image_norm bddBelow_image_norm
-/
+#print quotient_norm_neg /-
/-- The norm on the quotient satisfies `‖-x‖ = ‖x‖`. -/
theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖ :=
by
@@ -149,11 +154,15 @@ theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖
· rintro ⟨m, hm : mk' S m = -x, rfl⟩
exact ⟨-m, by simpa using neg_eq_iff_eq_neg.mpr ((mk'_apply _ _).symm.trans hm)⟩
#align quotient_norm_neg quotient_norm_neg
+-/
+#print quotient_norm_sub_rev /-
theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖ = ‖y - x‖ := by
rw [show x - y = -(y - x) by abel, quotient_norm_neg]
#align quotient_norm_sub_rev quotient_norm_sub_rev
+-/
+#print quotient_norm_mk_le /-
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
by
@@ -164,12 +173,16 @@ theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m
· apply Set.mem_image_of_mem
rw [Set.mem_setOf_eq]
#align quotient_norm_mk_le quotient_norm_mk_le
+-/
+#print quotient_norm_mk_le' /-
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S m
#align quotient_norm_mk_le' quotient_norm_mk_le'
+-/
+#print quotient_norm_mk_eq /-
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
‖mk' S m‖ = sInf ((fun x => ‖m + x‖) '' S) :=
@@ -186,7 +199,9 @@ theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
use m + y
simpa using h
#align quotient_norm_mk_eq quotient_norm_mk_eq
+-/
+#print quotient_norm_nonneg /-
/-- The quotient norm is nonnegative. -/
theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x‖ :=
by
@@ -196,12 +211,16 @@ theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x
rintro _ ⟨n, h, rfl⟩
apply norm_nonneg
#align quotient_norm_nonneg quotient_norm_nonneg
+-/
+#print norm_mk_nonneg /-
/-- The quotient norm is nonnegative. -/
theorem norm_mk_nonneg (S : AddSubgroup M) (m : M) : 0 ≤ ‖mk' S m‖ :=
quotient_norm_nonneg S _
#align norm_mk_nonneg norm_mk_nonneg
+-/
+#print quotient_norm_eq_zero_iff /-
/-- The norm of the image of `m : M` in the quotient by `S` is zero if and only if `m` belongs
to the closure of `S`. -/
theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
@@ -227,7 +246,9 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
rw [Set.nonempty_image_iff]
use 0, S.zero_mem
#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iff
+-/
+#print norm_mk_lt /-
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `mk' S m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
@@ -238,7 +259,9 @@ theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
subst H
exact ⟨m, rfl, hnorm⟩
#align norm_mk_lt norm_mk_lt
+-/
+#print norm_mk_lt' /-
/-- For any `m : M` and any `0 < ε`, there is `s ∈ S` such that `‖m + s‖ < ‖mk' S m‖ + ε`. -/
theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
∃ s ∈ S, ‖m + s‖ < ‖mk' S m‖ + ε :=
@@ -249,7 +272,9 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
use -m + n, hn
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
+-/
+#print quotient_norm_add_le /-
/-- The quotient norm satisfies the triangle inequality. -/
theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖ ≤ ‖x‖ + ‖y‖ :=
by
@@ -263,20 +288,26 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
_ ≤ ‖m‖ + ‖n‖ := (norm_add_le _ _)
_ ≤ ‖mk' S m‖ + ‖mk' S n‖ + ε := by linarith
#align quotient_norm_add_le quotient_norm_add_le
+-/
+#print norm_mk_zero /-
/-- The quotient norm of `0` is `0`. -/
theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
by
erw [quotient_norm_eq_zero_iff]
exact subset_closure S.zero_mem
#align norm_mk_zero norm_mk_zero
+-/
+#print norm_mk_eq_zero /-
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
(h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
#align norm_zero_eq_zero norm_mk_eq_zero
+-/
+#print quotient_nhd_basis /-
theorem quotient_nhd_basis (S : AddSubgroup M) :
(𝓝 (0 : M ⧸ S)).HasBasis (fun ε : ℝ => 0 < ε) fun ε => {x | ‖x‖ < ε} :=
⟨by
@@ -310,6 +341,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
exact (continuous_add_right s).isOpen_preimage _ is_open_ball
· exact ⟨(0 : M), mem_ball_self ε_pos, (mk' S).map_zero⟩⟩
#align quotient_nhd_basis quotient_nhd_basis
+-/
#print AddSubgroup.seminormedAddCommGroupQuotient /-
/-- The seminormed group structure on the quotient by an additive subgroup. -/
@@ -355,6 +387,7 @@ example (S : AddSubgroup M) :
S.seminormedAddCommGroupQuotient.toUniformSpace.toTopologicalSpace :=
rfl
+#print AddSubgroup.normedAddCommGroupQuotient /-
/-- The quotient in the category of normed groups. -/
noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M)
[IsClosed (S : Set M)] : NormedAddCommGroup (M ⧸ S) :=
@@ -365,6 +398,7 @@ noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M
QuotientAddGroup.eq_iff_sub_mem] at h
exact h }
#align add_subgroup.normed_add_comm_group_quotient AddSubgroup.normedAddCommGroupQuotient
+-/
-- This is a sanity check left here on purpose to ensure that potential refactors won't destroy
-- this important property.
@@ -384,11 +418,13 @@ noncomputable def normedMk (S : AddSubgroup M) : NormedAddGroupHom M (M ⧸ S) :
#align add_subgroup.normed_mk AddSubgroup.normedMk
-/
+#print AddSubgroup.normedMk.apply /-
/-- `S.normed_mk` agrees with `quotient_add_group.mk' S`. -/
@[simp]
theorem normedMk.apply (S : AddSubgroup M) (m : M) : normedMk S m = QuotientAddGroup.mk' S m :=
rfl
#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.apply
+-/
#print AddSubgroup.surjective_normedMk /-
/-- `S.normed_mk` is surjective. -/
@@ -404,11 +440,14 @@ theorem ker_normedMk (S : AddSubgroup M) : S.normedMk.ker = S :=
#align add_subgroup.ker_normed_mk AddSubgroup.ker_normedMk
-/
+#print AddSubgroup.norm_normedMk_le /-
/-- The operator norm of the projection is at most `1`. -/
theorem norm_normedMk_le (S : AddSubgroup M) : ‖S.normedMk‖ ≤ 1 :=
NormedAddGroupHom.opNorm_le_bound _ zero_le_one fun m => by simp [quotient_norm_mk_le']
#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_le
+-/
+#print AddSubgroup.norm_normedMk /-
/-- The operator norm of the projection is `1` if the subspace is not dense. -/
theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M) ≠ univ) :
‖S.normedMk‖ = 1 := by
@@ -450,7 +489,9 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
_ ≥ (1 + min ε (1 / 2) / (1 - min ε (1 / 2)))⁻¹ := (le_of_lt hlt)
_ = 1 - min ε (1 / 2) := by field_simp [(ne_of_lt hδ).symm]
#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMk
+-/
+#print AddSubgroup.norm_trivial_quotient_mk /-
/-- The operator norm of the projection is `0` if the subspace is dense. -/
theorem norm_trivial_quotient_mk (S : AddSubgroup M)
(h : (S.topologicalClosure : Set M) = Set.univ) : ‖S.normedMk‖ = 0 :=
@@ -463,6 +504,7 @@ theorem norm_trivial_quotient_mk (S : AddSubgroup M)
rw [ker_normed_mk] at hker
simp only [(quotient_norm_eq_zero_iff S x).mpr hker, normed_mk.apply, MulZeroClass.zero_mul]
#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mk
+-/
end AddSubgroup
@@ -477,6 +519,7 @@ structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
-/
+#print NormedAddGroupHom.lift /-
/-- Given `f : normed_add_group_hom M N` such that `f s = 0` for all `s ∈ S`, where,
`S : add_subgroup M` is closed, the induced morphism `normed_add_group_hom (M ⧸ S) N`. -/
noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
@@ -492,13 +535,17 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
_ ≤ c * (‖mk' S m‖ + ε / c) := ((mul_lt_mul_left hcpos).mpr hmnorm).le
_ = c * ‖mk' S m‖ + ε := by rw [mul_add, mul_div_cancel' _ hcpos.ne.symm] }
#align normed_add_group_hom.lift NormedAddGroupHom.lift
+-/
+#print NormedAddGroupHom.lift_mk /-
theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (m : M) :
lift S f hf (S.normedMk m) = f m :=
rfl
#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mk
+-/
+#print NormedAddGroupHom.lift_unique /-
theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (g : NormedAddGroupHom (M ⧸ S) N) :
g.comp S.normedMk = f → g = lift S f hf :=
@@ -509,6 +556,7 @@ theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
change g.comp S.normed_mk x = _
simpa only [h]
#align normed_add_group_hom.lift_unique NormedAddGroupHom.lift_unique
+-/
#print NormedAddGroupHom.isQuotientQuotient /-
/-- `S.normed_mk` satisfies `is_quotient`. -/
@@ -517,6 +565,7 @@ theorem isQuotientQuotient (S : AddSubgroup M) : IsQuotient S.normedMk :=
#align normed_add_group_hom.is_quotient_quotient NormedAddGroupHom.isQuotientQuotient
-/
+#print NormedAddGroupHom.IsQuotient.norm_lift /-
theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f) {ε : ℝ} (hε : 0 < ε)
(n : N) : ∃ m : M, f m = n ∧ ‖m‖ < ‖n‖ + ε :=
by
@@ -530,7 +579,9 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
exact
⟨m + x, by rw [map_add, (NormedAddGroupHom.mem_ker f x).mp hx, add_zero], by rwa [hquot.norm]⟩
#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_lift
+-/
+#print NormedAddGroupHom.IsQuotient.norm_le /-
theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m : M) :
‖f m‖ ≤ ‖m‖ := by
rw [hquot.norm]
@@ -540,7 +591,9 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
apply norm_nonneg
· exact ⟨0, f.ker.zero_mem, by simp⟩
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
+-/
+#print NormedAddGroupHom.lift_norm_le /-
theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c := by
@@ -567,7 +620,9 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
· exact_mod_cast hc
· rw [mul_add, mul_div_cancel']; exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
+-/
+#print NormedAddGroupHom.lift_normNoninc /-
theorem lift_normNoninc {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (fb : f.NormNoninc) :
(lift S f hf).NormNoninc := fun x =>
@@ -575,6 +630,7 @@ theorem lift_normNoninc {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
have fb' : ‖f‖ ≤ (1 : ℝ≥0) := norm_noninc.norm_noninc_iff_norm_le_one.mp fb
simpa using le_of_op_norm_le _ (f.lift_norm_le _ _ fb') _
#align normed_add_group_hom.lift_norm_noninc NormedAddGroupHom.lift_normNoninc
+-/
end NormedAddGroupHom
@@ -616,16 +672,20 @@ instance Submodule.Quotient.completeSpace [CompleteSpace M] : CompleteSpace (M
#align submodule.quotient.complete_space Submodule.Quotient.completeSpace
-/
+#print Submodule.Quotient.norm_mk_lt /-
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `submodule.quotient.mk m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem Submodule.Quotient.norm_mk_lt {S : Submodule R M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
∃ m : M, Submodule.Quotient.mk m = x ∧ ‖m‖ < ‖x‖ + ε :=
norm_mk_lt x hε
#align submodule.quotient.norm_mk_lt Submodule.Quotient.norm_mk_lt
+-/
+#print Submodule.Quotient.norm_mk_le /-
theorem Submodule.Quotient.norm_mk_le (m : M) : ‖(Submodule.Quotient.mk m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S.toAddSubgroup m
#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_le
+-/
#print Submodule.Quotient.normedSpace /-
instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [NormedSpace 𝕜 M] [SMul 𝕜 R]
@@ -653,14 +713,18 @@ section Ideal
variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
+#print Ideal.Quotient.norm_mk_lt /-
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
norm_mk_lt x hε
#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_lt
+-/
+#print Ideal.Quotient.norm_mk_le /-
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_le
+-/
#print Ideal.Quotient.semiNormedCommRing /-
instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -218,7 +218,6 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
_ ↔ ∀ ε > 0, ∃ x ∈ S, x ∈ Metric.ball m ε := by
simp [dist_eq_norm, ← sub_eq_add_neg, norm_sub_rev]
_ ↔ m ∈ closure ↑S := by simp [Metric.mem_closure_iff, dist_comm]
-
refine' forall₂_congr fun ε ε_pos => _
rw [← S.exists_neg_mem_iff_exists_mem]
simp
@@ -263,7 +262,6 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
_ ≤ ‖m + n‖ := (quotient_norm_mk_le S (m + n))
_ ≤ ‖m‖ + ‖n‖ := (norm_add_le _ _)
_ ≤ ‖mk' S m‖ + ‖mk' S n‖ + ε := by linarith
-
#align quotient_norm_add_le quotient_norm_add_le
/-- The quotient norm of `0` is `0`. -/
@@ -451,7 +449,6 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
_ = ‖y‖ / ‖m‖ := by rw [normed_mk.apply, hm]
_ ≥ (1 + min ε (1 / 2) / (1 - min ε (1 / 2)))⁻¹ := (le_of_lt hlt)
_ = 1 - min ε (1 / 2) := by field_simp [(ne_of_lt hδ).symm]
-
#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMk
/-- The operator norm of the projection is `0` if the subspace is dense. -/
@@ -493,8 +490,7 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
calc
‖f m‖ ≤ c * ‖m‖ := hc m
_ ≤ c * (‖mk' S m‖ + ε / c) := ((mul_lt_mul_left hcpos).mpr hmnorm).le
- _ = c * ‖mk' S m‖ + ε := by rw [mul_add, mul_div_cancel' _ hcpos.ne.symm]
- }
+ _ = c * ‖mk' S m‖ + ε := by rw [mul_add, mul_div_cancel' _ hcpos.ne.symm] }
#align normed_add_group_hom.lift NormedAddGroupHom.lift
theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
@@ -557,7 +553,6 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
calc
‖f x‖ ≤ 0 * ‖x‖ := f.le_of_op_norm_le fb x
_ = 0 := MulZeroClass.zero_mul _
-
· replace hc : 0 < c := pos_iff_ne_zero.mpr hc
apply le_of_forall_pos_le_add
intro ε hε
@@ -569,7 +564,6 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
‖f x‖ ≤ c * ‖x‖ := f.le_of_op_norm_le fb x
_ ≤ c * (‖S.normed_mk x‖ + ε / c) := ((mul_le_mul_left _).mpr Hx.le)
_ = c * _ + ε := _
-
· exact_mod_cast hc
· rw [mul_add, mul_div_cancel']; exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
@@ -649,8 +643,7 @@ instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [Norm
specialize h ‖a‖ ⟨by linarith, by linarith [Submodule.Quotient.norm_mk_le S a]⟩
calc
_ ≤ ‖k‖ * ‖a‖ := (quotient_norm_mk_le S.to_add_subgroup (k • a)).trans_eq (norm_smul k a)
- _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
- }
+ _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le }
#align submodule.quotient.normed_space Submodule.Quotient.normedSpace
-/
@@ -691,8 +684,7 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
⟨by linarith, by linarith [Ideal.Quotient.norm_mk_le I b]⟩
calc
_ ≤ ‖a‖ * ‖b‖ := (Ideal.Quotient.norm_mk_le I (a * b)).trans (norm_mul_le a b)
- _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
- }
+ _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le }
#align ideal.quotient.semi_normed_comm_ring Ideal.Quotient.semiNormedCommRing
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -109,17 +109,17 @@ variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
#print normOnQuotient /-
/-- The definition of the norm on the quotient by an additive subgroup. -/
noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
- where norm x := sInf (norm '' { m | mk' S m = x })
+ where norm x := sInf (norm '' {m | mk' S m = x})
#align norm_on_quotient normOnQuotient
-/
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
- ‖x‖ = sInf (norm '' { m : M | (m : M ⧸ S) = x }) :=
+ ‖x‖ = sInf (norm '' {m : M | (m : M ⧸ S) = x}) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
theorem image_norm_nonempty {S : AddSubgroup M} :
- ∀ x : M ⧸ S, (norm '' { m | mk' S m = x }).Nonempty :=
+ ∀ x : M ⧸ S, (norm '' {m | mk' S m = x}).Nonempty :=
by
rintro ⟨m⟩
rw [Set.nonempty_image_iff]
@@ -140,7 +140,7 @@ theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
/-- The norm on the quotient satisfies `‖-x‖ = ‖x‖`. -/
theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖ :=
by
- suffices norm '' { m | mk' S m = x } = norm '' { m | mk' S m = -x } by simp only [this, norm]
+ suffices norm '' {m | mk' S m = x} = norm '' {m | mk' S m = -x} by simp only [this, norm]
ext r
constructor
· rintro ⟨m, rfl : mk' S m = x, rfl⟩
@@ -280,7 +280,7 @@ theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
#align norm_zero_eq_zero norm_mk_eq_zero
theorem quotient_nhd_basis (S : AddSubgroup M) :
- (𝓝 (0 : M ⧸ S)).HasBasis (fun ε : ℝ => 0 < ε) fun ε => { x | ‖x‖ < ε } :=
+ (𝓝 (0 : M ⧸ S)).HasBasis (fun ε : ℝ => 0 < ε) fun ε => {x | ‖x‖ < ε} :=
⟨by
intro U
constructor
@@ -297,7 +297,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
dsimp
linarith
· rintro ⟨ε, ε_pos, h⟩
- have : mk' S '' ball (0 : M) ε ⊆ { x | ‖x‖ < ε } :=
+ have : mk' S '' ball (0 : M) ε ⊆ {x | ‖x‖ < ε} :=
by
rintro _ ⟨x, x_in, rfl⟩
rw [mem_ball_zero_iff] at x_in
@@ -333,8 +333,8 @@ noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgro
apply this.eq_of_same_basis
have :
∀ ε : ℝ,
- (fun p : (M ⧸ S) × M ⧸ S => p.snd - p.fst) ⁻¹' { x | ‖x‖ < ε } =
- { p : (M ⧸ S) × M ⧸ S | ‖p.fst - p.snd‖ < ε } :=
+ (fun p : (M ⧸ S) × M ⧸ S => p.snd - p.fst) ⁻¹' {x | ‖x‖ < ε} =
+ {p : (M ⧸ S) × M ⧸ S | ‖p.fst - p.snd‖ < ε} :=
by
intro ε
ext x
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -246,7 +246,7 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
by
obtain ⟨n : M, hn : mk' S n = mk' S m, hn' : ‖n‖ < ‖mk' S m‖ + ε⟩ :=
norm_mk_lt (QuotientAddGroup.mk' S m) hε
- erw [eq_comm, QuotientAddGroup.eq] at hn
+ erw [eq_comm, QuotientAddGroup.eq] at hn
use -m + n, hn
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
@@ -276,7 +276,7 @@ theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
- (h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
+ (h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
#align norm_zero_eq_zero norm_mk_eq_zero
theorem quotient_nhd_basis (S : AddSubgroup M) :
@@ -285,12 +285,12 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
intro U
constructor
· intro U_in
- rw [← (mk' S).map_zero] at U_in
+ rw [← (mk' S).map_zero] at U_in
have := preimage_nhds_coinduced U_in
rcases metric.mem_nhds_iff.mp this with ⟨ε, ε_pos, H⟩
use ε / 2, half_pos ε_pos
intro x x_in
- dsimp at x_in
+ dsimp at x_in
rcases norm_mk_lt x (half_pos ε_pos) with ⟨y, rfl, ry⟩
apply H
rw [ball_zero_eq]
@@ -300,7 +300,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
have : mk' S '' ball (0 : M) ε ⊆ { x | ‖x‖ < ε } :=
by
rintro _ ⟨x, x_in, rfl⟩
- rw [mem_ball_zero_iff] at x_in
+ rw [mem_ball_zero_iff] at x_in
exact lt_of_le_of_lt (quotient_norm_mk_le S x) x_in
apply Filter.mem_of_superset _ (Set.Subset.trans this h)
clear h U this
@@ -364,7 +364,7 @@ noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M
eq_of_dist_eq_zero := by
rintro ⟨m⟩ ⟨m'⟩ (h : ‖mk' S m - mk' S m'‖ = 0)
erw [← (mk' S).map_sub, quotient_norm_eq_zero_iff, ‹IsClosed _›.closure_eq, ←
- QuotientAddGroup.eq_iff_sub_mem] at h
+ QuotientAddGroup.eq_iff_sub_mem] at h
exact h }
#align add_subgroup.normed_add_comm_group_quotient AddSubgroup.normedAddCommGroupQuotient
@@ -430,20 +430,20 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
‖y‖ + min ε (1 / 2) / (1 - min ε (1 / 2)) * ‖y‖ =
‖y‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) :=
by ring
- rw [hrw] at hlt
+ rw [hrw] at hlt
have hm0 : ‖m‖ ≠ 0 := by
intro h0
have hnorm := quotient_norm_mk_le S m
- rw [h0, hm] at hnorm
+ rw [h0, hm] at hnorm
replace hnorm := le_antisymm hnorm (norm_nonneg _)
simpa [hnorm] using hy
replace hlt := (div_lt_div_right (lt_of_le_of_ne (norm_nonneg m) hm0.symm)).2 hlt
- simp only [hm0, div_self, Ne.def, not_false_iff] at hlt
+ simp only [hm0, div_self, Ne.def, not_false_iff] at hlt
have hrw₁ :
‖y‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) / ‖m‖ =
‖y‖ / ‖m‖ * (1 + min ε (1 / 2) / (1 - min ε (1 / 2))) :=
by ring
- rw [hrw₁] at hlt
+ rw [hrw₁] at hlt
replace hlt := (inv_pos_lt_iff_one_lt_mul (lt_trans (div_pos hδpos hδ) (lt_one_add _))).2 hlt
suffices ‖S.normed_mk‖ ≥ 1 - min ε (1 / 2) by exact sub_le_iff_le_add.mp this
calc
@@ -463,7 +463,7 @@ theorem norm_trivial_quotient_mk (S : AddSubgroup M)
by
rw [S.ker_normed_mk]
exact Set.mem_of_eq_of_mem h trivial
- rw [ker_normed_mk] at hker
+ rw [ker_normed_mk] at hker
simp only [(quotient_norm_eq_zero_iff S x).mpr hker, normed_mk.apply, MulZeroClass.zero_mul]
#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mk
@@ -551,7 +551,7 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
apply op_norm_le_bound _ c.coe_nonneg
intro x
by_cases hc : c = 0
- · simp only [hc, NNReal.coe_zero, MulZeroClass.zero_mul] at fb⊢
+ · simp only [hc, NNReal.coe_zero, MulZeroClass.zero_mul] at fb ⊢
obtain ⟨x, rfl⟩ := surjective_quot_mk _ x
show ‖f x‖ ≤ 0
calc
@@ -643,7 +643,7 @@ instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [Norm
have :=
(nhds_basis_ball.tendsto_iff nhds_basis_ball).mp
((@Real.uniformContinuous_const_mul ‖k‖).Continuous.Tendsto ‖x‖) ε hε
- simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
+ simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
rcases this with ⟨δ, hδ, h⟩
obtain ⟨a, rfl, ha⟩ := Submodule.Quotient.norm_mk_lt x hδ
specialize h ‖a‖ ⟨by linarith, by linarith [Submodule.Quotient.norm_mk_le S a]⟩
@@ -681,11 +681,11 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
have :=
((nhds_basis_ball.prod_nhds nhds_basis_ball).tendsto_iffₓ nhds_basis_ball).mp
(real.continuous_mul.tendsto (‖x‖, ‖y‖)) ε hε
- simp only [Set.mem_prod, mem_ball, and_imp, Prod.forall, exists_prop, Prod.exists] at this
+ simp only [Set.mem_prod, mem_ball, and_imp, Prod.forall, exists_prop, Prod.exists] at this
rcases this with ⟨ε₁, ε₂, ⟨h₁, h₂⟩, h⟩
obtain ⟨⟨a, rfl, ha⟩, ⟨b, rfl, hb⟩⟩ := Ideal.Quotient.norm_mk_lt x h₁,
Ideal.Quotient.norm_mk_lt y h₂
- simp only [dist, abs_sub_lt_iff] at h
+ simp only [dist, abs_sub_lt_iff] at h
specialize
h ‖a‖ ‖b‖ ⟨by linarith, by linarith [Ideal.Quotient.norm_mk_le I a]⟩
⟨by linarith, by linarith [Ideal.Quotient.norm_mk_le I b]⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -102,7 +102,7 @@ noncomputable section
open quotientAddGroup Metric Set
-open Topology NNReal
+open scoped Topology NNReal
variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -113,20 +113,11 @@ noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
#align norm_on_quotient normOnQuotient
-/
-/- warning: add_subgroup.quotient_norm_eq -> AddSubgroup.quotient_norm_eq is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.sInf.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m) x))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.sInf.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m) x))))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eqₓ'. -/
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
‖x‖ = sInf (norm '' { m : M | (m : M ⧸ S) = x }) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
-/- warning: image_norm_nonempty -> image_norm_nonempty is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_norm_nonempty image_norm_nonemptyₓ'. -/
theorem image_norm_nonempty {S : AddSubgroup M} :
∀ x : M ⧸ S, (norm '' { m | mk' S m = x }).Nonempty :=
by
@@ -146,12 +137,6 @@ theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
#align bdd_below_image_norm bddBelow_image_norm
-/
-/- warning: quotient_norm_neg -> quotient_norm_neg is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (Neg.neg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasNeg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))) x)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (Neg.neg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toNeg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) x)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
-Case conversion may be inaccurate. Consider using '#align quotient_norm_neg quotient_norm_negₓ'. -/
/-- The norm on the quotient satisfies `‖-x‖ = ‖x‖`. -/
theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖ :=
by
@@ -165,16 +150,10 @@ theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖
exact ⟨-m, by simpa using neg_eq_iff_eq_neg.mpr ((mk'_apply _ _).symm.trans hm)⟩
#align quotient_norm_neg quotient_norm_neg
-/- warning: quotient_norm_sub_rev -> quotient_norm_sub_rev is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quotient_norm_sub_rev quotient_norm_sub_revₓ'. -/
theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖ = ‖y - x‖ := by
rw [show x - y = -(y - x) by abel, quotient_norm_neg]
#align quotient_norm_sub_rev quotient_norm_sub_rev
-/- warning: quotient_norm_mk_le -> quotient_norm_mk_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le quotient_norm_mk_leₓ'. -/
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
by
@@ -186,20 +165,11 @@ theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m
rw [Set.mem_setOf_eq]
#align quotient_norm_mk_le quotient_norm_mk_le
-/- warning: quotient_norm_mk_le' -> quotient_norm_mk_le' is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m)
-Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le' quotient_norm_mk_le'ₓ'. -/
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S m
#align quotient_norm_mk_le' quotient_norm_mk_le'
-/- warning: quotient_norm_mk_eq -> quotient_norm_mk_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_eq quotient_norm_mk_eqₓ'. -/
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
‖mk' S m‖ = sInf ((fun x => ‖m + x‖) '' S) :=
@@ -217,12 +187,6 @@ theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
simpa using h
#align quotient_norm_mk_eq quotient_norm_mk_eq
-/- warning: quotient_norm_nonneg -> quotient_norm_nonneg is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
-Case conversion may be inaccurate. Consider using '#align quotient_norm_nonneg quotient_norm_nonnegₓ'. -/
/-- The quotient norm is nonnegative. -/
theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x‖ :=
by
@@ -233,17 +197,11 @@ theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x
apply norm_nonneg
#align quotient_norm_nonneg quotient_norm_nonneg
-/- warning: norm_mk_nonneg -> norm_mk_nonneg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align norm_mk_nonneg norm_mk_nonnegₓ'. -/
/-- The quotient norm is nonnegative. -/
theorem norm_mk_nonneg (S : AddSubgroup M) (m : M) : 0 ≤ ‖mk' S m‖ :=
quotient_norm_nonneg S _
#align norm_mk_nonneg norm_mk_nonneg
-/- warning: quotient_norm_eq_zero_iff -> quotient_norm_eq_zero_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iffₓ'. -/
/-- The norm of the image of `m : M` in the quotient by `S` is zero if and only if `m` belongs
to the closure of `S`. -/
theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
@@ -271,9 +229,6 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
use 0, S.zero_mem
#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iff
-/- warning: norm_mk_lt -> norm_mk_lt is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align norm_mk_lt norm_mk_ltₓ'. -/
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `mk' S m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
@@ -285,9 +240,6 @@ theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
exact ⟨m, rfl, hnorm⟩
#align norm_mk_lt norm_mk_lt
-/- warning: norm_mk_lt' -> norm_mk_lt' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align norm_mk_lt' norm_mk_lt'ₓ'. -/
/-- For any `m : M` and any `0 < ε`, there is `s ∈ S` such that `‖m + s‖ < ‖mk' S m‖ + ε`. -/
theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
∃ s ∈ S, ‖m + s‖ < ‖mk' S m‖ + ε :=
@@ -299,12 +251,6 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
-/- warning: quotient_norm_add_le -> quotient_norm_add_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HAdd.hAdd.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))) x y)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) y))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HAdd.hAdd.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))) x y)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) y))
-Case conversion may be inaccurate. Consider using '#align quotient_norm_add_le quotient_norm_add_leₓ'. -/
/-- The quotient norm satisfies the triangle inequality. -/
theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖ ≤ ‖x‖ + ‖y‖ :=
by
@@ -320,12 +266,6 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
#align quotient_norm_add_le quotient_norm_add_le
-/- warning: norm_mk_zero -> norm_mk_zero is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (OfNat.mk.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.zero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.toOfNat0.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
-Case conversion may be inaccurate. Consider using '#align norm_mk_zero norm_mk_zeroₓ'. -/
/-- The quotient norm of `0` is `0`. -/
theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
by
@@ -333,21 +273,12 @@ theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
exact subset_closure S.zero_mem
#align norm_mk_zero norm_mk_zero
-/- warning: norm_zero_eq_zero -> norm_mk_eq_zero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align norm_zero_eq_zero norm_mk_eq_zeroₓ'. -/
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
(h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
#align norm_zero_eq_zero norm_mk_eq_zero
-/- warning: quotient_nhd_basis -> quotient_nhd_basis is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Filter.HasBasis.{u1, 1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) Real (nhds.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.topologicalSpace.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (OfNat.mk.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.zero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))))) (fun (ε : Real) => LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) (fun (ε : Real) => setOf.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Filter.HasBasis.{u1, 1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) Real (nhds.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.topologicalSpace.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.toOfNat0.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))))) (fun (ε : Real) => LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) (fun (ε : Real) => setOf.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))
-Case conversion may be inaccurate. Consider using '#align quotient_nhd_basis quotient_nhd_basisₓ'. -/
theorem quotient_nhd_basis (S : AddSubgroup M) :
(𝓝 (0 : M ⧸ S)).HasBasis (fun ε : ℝ => 0 < ε) fun ε => { x | ‖x‖ < ε } :=
⟨by
@@ -426,12 +357,6 @@ example (S : AddSubgroup M) :
S.seminormedAddCommGroupQuotient.toUniformSpace.toTopologicalSpace :=
rfl
-/- warning: add_subgroup.normed_add_comm_group_quotient -> AddSubgroup.normedAddCommGroupQuotient is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) [_inst_3 : IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)], NormedAddCommGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) [_inst_3 : IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)], NormedAddCommGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)
-Case conversion may be inaccurate. Consider using '#align add_subgroup.normed_add_comm_group_quotient AddSubgroup.normedAddCommGroupQuotientₓ'. -/
/-- The quotient in the category of normed groups. -/
noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M)
[IsClosed (S : Set M)] : NormedAddCommGroup (M ⧸ S) :=
@@ -461,9 +386,6 @@ noncomputable def normedMk (S : AddSubgroup M) : NormedAddGroupHom M (M ⧸ S) :
#align add_subgroup.normed_mk AddSubgroup.normedMk
-/
-/- warning: add_subgroup.normed_mk.apply -> AddSubgroup.normedMk.apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.applyₓ'. -/
/-- `S.normed_mk` agrees with `quotient_add_group.mk' S`. -/
@[simp]
theorem normedMk.apply (S : AddSubgroup M) (m : M) : normedMk S m = QuotientAddGroup.mk' S m :=
@@ -484,23 +406,11 @@ theorem ker_normedMk (S : AddSubgroup M) : S.normedMk.ker = S :=
#align add_subgroup.ker_normed_mk AddSubgroup.ker_normedMk
-/
-/- warning: add_subgroup.norm_normed_mk_le -> AddSubgroup.norm_normedMk_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_leₓ'. -/
/-- The operator norm of the projection is at most `1`. -/
theorem norm_normedMk_le (S : AddSubgroup M) : ‖S.normedMk‖ ≤ 1 :=
NormedAddGroupHom.opNorm_le_bound _ zero_le_one fun m => by simp [quotient_norm_mk_le']
#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_le
-/- warning: add_subgroup.norm_normed_mk -> AddSubgroup.norm_normedMk is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMkₓ'. -/
/-- The operator norm of the projection is `1` if the subspace is not dense. -/
theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M) ≠ univ) :
‖S.normedMk‖ = 1 := by
@@ -544,12 +454,6 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMk
-/- warning: add_subgroup.norm_trivial_quotient_mk -> AddSubgroup.norm_trivial_quotient_mk is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
-Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mkₓ'. -/
/-- The operator norm of the projection is `0` if the subspace is dense. -/
theorem norm_trivial_quotient_mk (S : AddSubgroup M)
(h : (S.topologicalClosure : Set M) = Set.univ) : ‖S.normedMk‖ = 0 :=
@@ -576,12 +480,6 @@ structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
-/
-/- warning: normed_add_group_hom.lift -> NormedAddGroupHom.lift is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3), (forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) -> (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3), (forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) -> (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3)
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift NormedAddGroupHom.liftₓ'. -/
/-- Given `f : normed_add_group_hom M N` such that `f s = 0` for all `s ∈ S`, where,
`S : add_subgroup M` is closed, the induced morphism `normed_add_group_hom (M ⧸ S) N`. -/
noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
@@ -599,21 +497,12 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
}
#align normed_add_group_hom.lift NormedAddGroupHom.lift
-/- warning: normed_add_group_hom.lift_mk -> NormedAddGroupHom.lift_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mkₓ'. -/
theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (m : M) :
lift S f hf (S.normedMk m) = f m :=
rfl
#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mk
-/- warning: normed_add_group_hom.lift_unique -> NormedAddGroupHom.lift_unique is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) (g : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3), (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.comp.{u1, u1, u2} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 g (AddSubgroup.normedMk.{u1} M _inst_1 S)) f) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) g (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) (g : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3), (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.comp.{u1, u1, u2} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 g (AddSubgroup.normedMk.{u1} M _inst_1 S)) f) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) g (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_unique NormedAddGroupHom.lift_uniqueₓ'. -/
theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (g : NormedAddGroupHom (M ⧸ S) N) :
g.comp S.normedMk = f → g = lift S f hf :=
@@ -632,12 +521,6 @@ theorem isQuotientQuotient (S : AddSubgroup M) : IsQuotient S.normedMk :=
#align normed_add_group_hom.is_quotient_quotient NormedAddGroupHom.isQuotientQuotient
-/
-/- warning: normed_add_group_hom.is_quotient.norm_lift -> NormedAddGroupHom.IsQuotient.norm_lift is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {N : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} M] [_inst_2 : SeminormedAddCommGroup.{u2} N] {f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u1, u2} M N _inst_1 _inst_2 f) -> (forall {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (forall (n : N), Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_2) f m) n) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u2} N (SeminormedAddCommGroup.toHasNorm.{u2} N _inst_2) n) ε)))))
-but is expected to have type
- forall {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} M] [_inst_2 : SeminormedAddCommGroup.{u1} N] {f : NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u2, u1} M N _inst_1 _inst_2 f) -> (forall {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (forall (n : N), Exists.{succ u2} M (fun (m : M) => And (Eq.{succ u1} N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1)))))) (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} M N _inst_1 _inst_2))) f m) n) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} N (SeminormedAddCommGroup.toNorm.{u1} N _inst_2) n) ε)))))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_liftₓ'. -/
theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f) {ε : ℝ} (hε : 0 < ε)
(n : N) : ∃ m : M, f m = n ∧ ‖m‖ < ‖n‖ + ε :=
by
@@ -652,12 +535,6 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
⟨m + x, by rw [map_add, (NormedAddGroupHom.mem_ker f x).mp hx, add_zero], by rwa [hquot.norm]⟩
#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_lift
-/- warning: normed_add_group_hom.is_quotient.norm_le -> NormedAddGroupHom.IsQuotient.norm_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {N : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} M] [_inst_2 : SeminormedAddCommGroup.{u2} N] {f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u1, u2} M N _inst_1 _inst_2 f) -> (forall (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} N (SeminormedAddCommGroup.toHasNorm.{u2} N _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_2) f m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m))
-but is expected to have type
- forall {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} M] [_inst_2 : SeminormedAddCommGroup.{u1} N] {f : NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u2, u1} M N _inst_1 _inst_2 f) -> (forall (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} N (SeminormedAddCommGroup.toNorm.{u1} N _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1)))))) (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} M N _inst_1 _inst_2))) f m)) (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_leₓ'. -/
theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m : M) :
‖f m‖ ≤ ‖m‖ := by
rw [hquot.norm]
@@ -668,12 +545,6 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
· exact ⟨0, f.ker.zero_mem, by simp⟩
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
-/- warning: normed_add_group_hom.lift_norm_le -> NormedAddGroupHom.lift_norm_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) {c : NNReal}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} M N _inst_1 _inst_3) f) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) c)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) c))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) {c : NNReal}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} M N _inst_1 _inst_3) f) (NNReal.toReal c)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf)) (NNReal.toReal c))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_leₓ'. -/
theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c := by
@@ -703,12 +574,6 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
· rw [mul_add, mul_div_cancel']; exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
-/- warning: normed_add_group_hom.lift_norm_noninc -> NormedAddGroupHom.lift_normNoninc is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))), (NormedAddGroupHom.NormNoninc.{u1, u2} M N _inst_1 _inst_3 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))), (NormedAddGroupHom.NormNoninc.{u1, u2} M N _inst_1 _inst_3 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
-Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_norm_noninc NormedAddGroupHom.lift_normNonincₓ'. -/
theorem lift_normNoninc {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (fb : f.NormNoninc) :
(lift S f hf).NormNoninc := fun x =>
@@ -757,12 +622,6 @@ instance Submodule.Quotient.completeSpace [CompleteSpace M] : CompleteSpace (M
#align submodule.quotient.complete_space Submodule.Quotient.completeSpace
-/
-/- warning: submodule.quotient.norm_mk_lt -> Submodule.Quotient.norm_mk_lt is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] {S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4} (x : HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) x) ε))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] {S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4} (x : HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) x) ε))))
-Case conversion may be inaccurate. Consider using '#align submodule.quotient.norm_mk_lt Submodule.Quotient.norm_mk_ltₓ'. -/
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `submodule.quotient.mk m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem Submodule.Quotient.norm_mk_lt {S : Submodule R M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
@@ -770,12 +629,6 @@ theorem Submodule.Quotient.norm_mk_lt {S : Submodule R M} (x : M ⧸ S) {ε :
norm_mk_lt x hε
#align submodule.quotient.norm_mk_lt Submodule.Quotient.norm_mk_lt
-/- warning: submodule.quotient.norm_mk_le -> Submodule.Quotient.norm_mk_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] (S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
-but is expected to have type
- forall {M : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u2} M] {R : Type.{u1}} [_inst_3 : Ring.{u1} R] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1))] (S : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} (HasQuotient.Quotient.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toNorm.{u2} (HasQuotient.Quotient.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u2, u1} M _inst_1 R _inst_3 _inst_4 S)) (Submodule.Quotient.mk.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4 S m)) (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m)
-Case conversion may be inaccurate. Consider using '#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_leₓ'. -/
theorem Submodule.Quotient.norm_mk_le (m : M) : ‖(Submodule.Quotient.mk m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S.toAddSubgroup m
#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_le
@@ -807,17 +660,11 @@ section Ideal
variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
-/- warning: ideal.quotient.norm_mk_lt -> Ideal.Quotient.norm_mk_lt is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_ltₓ'. -/
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
norm_mk_lt x hε
#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_lt
-/- warning: ideal.quotient.norm_mk_le -> Ideal.Quotient.norm_mk_le is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_leₓ'. -/
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_le
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -700,8 +700,7 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
_ = c * _ + ε := _
· exact_mod_cast hc
- · rw [mul_add, mul_div_cancel']
- exact_mod_cast hc.ne'
+ · rw [mul_add, mul_div_cancel']; exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
/- warning: normed_add_group_hom.lift_norm_noninc -> NormedAddGroupHom.lift_normNoninc is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -125,10 +125,7 @@ theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
/- warning: image_norm_nonempty -> image_norm_nonempty is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Set.Nonempty.{0} Real (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x)))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Set.Nonempty.{0} Real (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x)))
+<too large>
Case conversion may be inaccurate. Consider using '#align image_norm_nonempty image_norm_nonemptyₓ'. -/
theorem image_norm_nonempty {S : AddSubgroup M} :
∀ x : M ⧸ S, (norm '' { m | mk' S m = x }).Nonempty :=
@@ -169,20 +166,14 @@ theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖
#align quotient_norm_neg quotient_norm_neg
/- warning: quotient_norm_sub_rev -> quotient_norm_sub_rev is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) x y)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) y x))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) x y)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) y x))
+<too large>
Case conversion may be inaccurate. Consider using '#align quotient_norm_sub_rev quotient_norm_sub_revₓ'. -/
theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖ = ‖y - x‖ := by
rw [show x - y = -(y - x) by abel, quotient_norm_neg]
#align quotient_norm_sub_rev quotient_norm_sub_rev
/- warning: quotient_norm_mk_le -> quotient_norm_mk_le is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m)
+<too large>
Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le quotient_norm_mk_leₓ'. -/
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
@@ -207,10 +198,7 @@ theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖
#align quotient_norm_mk_le' quotient_norm_mk_le'
/- warning: quotient_norm_mk_eq -> quotient_norm_mk_eq is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.sInf.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.sInf.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
+<too large>
Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_eq quotient_norm_mk_eqₓ'. -/
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
@@ -246,10 +234,7 @@ theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x
#align quotient_norm_nonneg quotient_norm_nonneg
/- warning: norm_mk_nonneg -> norm_mk_nonneg is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m))
+<too large>
Case conversion may be inaccurate. Consider using '#align norm_mk_nonneg norm_mk_nonnegₓ'. -/
/-- The quotient norm is nonnegative. -/
theorem norm_mk_nonneg (S : AddSubgroup M) (m : M) : 0 ≤ ‖mk' S m‖ :=
@@ -257,10 +242,7 @@ theorem norm_mk_nonneg (S : AddSubgroup M) (m : M) : 0 ≤ ‖mk' S m‖ :=
#align norm_mk_nonneg norm_mk_nonneg
/- warning: quotient_norm_eq_zero_iff -> quotient_norm_eq_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Iff (Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) m (closure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Iff (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) m (closure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
+<too large>
Case conversion may be inaccurate. Consider using '#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iffₓ'. -/
/-- The norm of the image of `m : M` in the quotient by `S` is zero if and only if `m` belongs
to the closure of `S`. -/
@@ -290,10 +272,7 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iff
/- warning: norm_mk_lt -> norm_mk_lt is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))))
+<too large>
Case conversion may be inaccurate. Consider using '#align norm_mk_lt norm_mk_ltₓ'. -/
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `mk' S m = x`
and `‖m‖ < ‖x‖ + ε`. -/
@@ -307,10 +286,7 @@ theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
#align norm_mk_lt norm_mk_lt
/- warning: norm_mk_lt' -> norm_mk_lt' is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (s : M) => Exists.{0} (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) (fun (H : Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) => LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m s)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) ε))))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (s : M) => And (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m s)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) a) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) ε))))
+<too large>
Case conversion may be inaccurate. Consider using '#align norm_mk_lt' norm_mk_lt'ₓ'. -/
/-- For any `m : M` and any `0 < ε`, there is `s ∈ S` such that `‖m + s‖ < ‖mk' S m‖ + ε`. -/
theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
@@ -358,10 +334,7 @@ theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
#align norm_mk_zero norm_mk_zero
/- warning: norm_zero_eq_zero -> norm_mk_eq_zero is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)) -> (forall (m : M), (Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) m S))
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) -> (forall (m : M), (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) m S))
+<too large>
Case conversion may be inaccurate. Consider using '#align norm_zero_eq_zero norm_mk_eq_zeroₓ'. -/
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
@@ -489,10 +462,7 @@ noncomputable def normedMk (S : AddSubgroup M) : NormedAddGroupHom M (M ⧸ S) :
-/
/- warning: add_subgroup.normed_mk.apply -> AddSubgroup.normedMk.apply is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (fun (_x : NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (NormedAddGroupHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S) m) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (fun (_x : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))) (AddSubgroup.normedMk.{u1} M _inst_1 S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)
+<too large>
Case conversion may be inaccurate. Consider using '#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.applyₓ'. -/
/-- `S.normed_mk` agrees with `quotient_add_group.mk' S`. -/
@[simp]
@@ -630,10 +600,7 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
#align normed_add_group_hom.lift NormedAddGroupHom.lift
/- warning: normed_add_group_hom.lift_mk -> NormedAddGroupHom.lift_mk is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) (m : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) => (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (fun (_x : NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (NormedAddGroupHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S) m)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f m)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) (m : M), Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (_x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3))) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (fun (_x : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))) (AddSubgroup.normedMk.{u1} M _inst_1 S) m)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f m)
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mkₓ'. -/
theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (m : M) :
@@ -842,10 +809,7 @@ section Ideal
variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
/- warning: ideal.quotient.norm_mk_lt -> Ideal.Quotient.norm_mk_lt is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) x) ε))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) x) ε))))
+<too large>
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_ltₓ'. -/
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
@@ -853,10 +817,7 @@ theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε :
#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_lt
/- warning: ideal.quotient.norm_mk_le -> Ideal.Quotient.norm_mk_le is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
+<too large>
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_leₓ'. -/
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -527,9 +527,9 @@ theorem norm_normedMk_le (S : AddSubgroup M) : ‖S.normedMk‖ ≤ 1 :=
/- warning: add_subgroup.norm_normed_mk -> AddSubgroup.norm_normedMk is a dubious translation:
lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMkₓ'. -/
/-- The operator norm of the projection is `1` if the subspace is not dense. -/
theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M) ≠ univ) :
@@ -576,9 +576,9 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
/- warning: add_subgroup.norm_trivial_quotient_mk -> AddSubgroup.norm_trivial_quotient_mk is a dubious translation:
lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.toTopologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mkₓ'. -/
/-- The operator norm of the projection is `0` if the subspace is dense. -/
theorem norm_trivial_quotient_mk (S : AddSubgroup M)
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -845,7 +845,7 @@ variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
lean 3 declaration is
forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) x) ε))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) x) ε))))
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) x) ε))))
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_ltₓ'. -/
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
@@ -856,7 +856,7 @@ theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_leₓ'. -/
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -109,18 +109,18 @@ variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
#print normOnQuotient /-
/-- The definition of the norm on the quotient by an additive subgroup. -/
noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
- where norm x := infₛ (norm '' { m | mk' S m = x })
+ where norm x := sInf (norm '' { m | mk' S m = x })
#align norm_on_quotient normOnQuotient
-/
/- warning: add_subgroup.quotient_norm_eq -> AddSubgroup.quotient_norm_eq is a dubious translation:
lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.infₛ.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m) x))))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.sInf.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m) x))))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.infₛ.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m) x))))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.sInf.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m) x))))
Case conversion may be inaccurate. Consider using '#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eqₓ'. -/
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
- ‖x‖ = infₛ (norm '' { m : M | (m : M ⧸ S) = x }) :=
+ ‖x‖ = sInf (norm '' { m : M | (m : M ⧸ S) = x }) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
@@ -187,7 +187,7 @@ Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le qu
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
by
- apply cinfₛ_le
+ apply csInf_le
use 0
· rintro _ ⟨n, h, rfl⟩
apply norm_nonneg
@@ -208,13 +208,13 @@ theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖
/- warning: quotient_norm_mk_eq -> quotient_norm_mk_eq is a dubious translation:
lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.infₛ.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.sInf.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.infₛ.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.sInf.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_eq quotient_norm_mk_eqₓ'. -/
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
- ‖mk' S m‖ = infₛ ((fun x => ‖m + x‖) '' S) :=
+ ‖mk' S m‖ = sInf ((fun x => ‖m + x‖) '' S) :=
by
change Inf _ = _
congr 1
@@ -240,7 +240,7 @@ theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x
by
rintro ⟨m⟩
change 0 ≤ ‖mk' S m‖
- apply le_cinfₛ (image_norm_nonempty _)
+ apply le_csInf (image_norm_nonempty _)
rintro _ ⟨n, h, rfl⟩
apply norm_nonneg
#align quotient_norm_nonneg quotient_norm_nonneg
@@ -268,7 +268,7 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
‖mk' S m‖ = 0 ↔ m ∈ closure (S : Set M) :=
by
have : 0 ≤ ‖mk' S m‖ := norm_mk_nonneg S m
- rw [← this.le_iff_eq, quotient_norm_mk_eq, Real.infₛ_le_iff]
+ rw [← this.le_iff_eq, quotient_norm_mk_eq, Real.sInf_le_iff]
simp_rw [zero_add]
· calc
(∀ ε > (0 : ℝ), ∃ r ∈ (fun x => ‖m + x‖) '' (S : Set M), r < ε) ↔
@@ -301,7 +301,7 @@ theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
∃ m : M, mk' S m = x ∧ ‖m‖ < ‖x‖ + ε :=
by
obtain ⟨_, ⟨m : M, H : mk' S m = x, rfl⟩, hnorm : ‖m‖ < ‖x‖ + ε⟩ :=
- Real.lt_infₛ_add_pos (image_norm_nonempty x) hε
+ Real.lt_sInf_add_pos (image_norm_nonempty x) hε
subst H
exact ⟨m, rfl, hnorm⟩
#align norm_mk_lt norm_mk_lt
@@ -403,7 +403,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
apply IsOpen.mem_nhds
· change IsOpen (mk' S ⁻¹' _)
erw [QuotientAddGroup.preimage_image_mk]
- apply isOpen_unionᵢ
+ apply isOpen_iUnion
rintro ⟨s, s_in⟩
exact (continuous_add_right s).isOpen_preimage _ is_open_ball
· exact ⟨(0 : M), mem_ball_self ε_pos, (mk' S).map_zero⟩⟩
@@ -437,7 +437,7 @@ noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgro
dsimp
rw [quotient_norm_sub_rev]
rw [funext this]
- refine' Filter.hasBasis_binfᵢ_principal _ Set.nonempty_Ioi
+ refine' Filter.hasBasis_biInf_principal _ Set.nonempty_Ioi
rintro ε (ε_pos : 0 < ε) η (η_pos : 0 < η)
refine' ⟨min ε η, lt_min ε_pos η_pos, _, _⟩
· suffices ∀ a b : M ⧸ S, ‖a - b‖ < ε → ‖a - b‖ < η → ‖a - b‖ < ε by simpa
@@ -602,7 +602,7 @@ namespace NormedAddGroupHom
by the kernel of `f`. -/
structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
Surjective : Function.Surjective f
- norm : ∀ x, ‖f x‖ = infₛ ((fun m => ‖x + m‖) '' f.ker)
+ norm : ∀ x, ‖f x‖ = sInf ((fun m => ‖x + m‖) '' f.ker)
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
-/
@@ -679,7 +679,7 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
by
rw [Set.nonempty_image_iff]
exact ⟨0, f.ker.zero_mem⟩
- rcases Real.lt_infₛ_add_pos nonemp hε with
+ rcases Real.lt_sInf_add_pos nonemp hε with
⟨_, ⟨⟨x, hx, rfl⟩, H : ‖m + x‖ < Inf ((fun m' : M => ‖m + m'‖) '' f.ker) + ε⟩⟩
exact
⟨m + x, by rw [map_add, (NormedAddGroupHom.mem_ker f x).mp hx, add_zero], by rwa [hquot.norm]⟩
@@ -694,7 +694,7 @@ Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.i
theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m : M) :
‖f m‖ ≤ ‖m‖ := by
rw [hquot.norm]
- apply cinfₛ_le
+ apply csInf_le
· use 0
rintro _ ⟨m', hm', rfl⟩
apply norm_nonneg
mathlib commit https://github.com/leanprover-community/mathlib/commit/cc5dd6244981976cc9da7afc4eee5682b037a013
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
! This file was ported from Lean 3 source module analysis.normed.group.quotient
-! leanprover-community/mathlib commit 2196ab363eb097c008d4497125e0dde23fb36db2
+! leanprover-community/mathlib commit 7d34004e19699895c13c86b78ae62bbaea0bc893
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
/-!
# Quotients of seminormed groups
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
For any `seminormed_add_comm_group M` and any `S : add_subgroup M`, we provide a
`seminormed_add_comm_group`, the group quotient `M ⧸ S`.
If `S` is closed, we provide `normed_add_comm_group (M ⧸ S)` (regardless of whether `M` itself is
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -842,7 +842,7 @@ variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
lean 3 declaration is
forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) x) ε))))
but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) I)) x) ε))))
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) x) ε))))
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_ltₓ'. -/
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
@@ -853,7 +853,7 @@ theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε :
lean 3 declaration is
forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r)
but is expected to have type
- forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Semiring.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommSemiring.toSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toCommSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_leₓ'. -/
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -103,16 +103,30 @@ open Topology NNReal
variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
+#print normOnQuotient /-
/-- The definition of the norm on the quotient by an additive subgroup. -/
noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
where norm x := infₛ (norm '' { m | mk' S m = x })
#align norm_on_quotient normOnQuotient
+-/
+/- warning: add_subgroup.quotient_norm_eq -> AddSubgroup.quotient_norm_eq is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.infₛ.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m) x))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (InfSet.infₛ.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m) x))))
+Case conversion may be inaccurate. Consider using '#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eqₓ'. -/
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
‖x‖ = infₛ (norm '' { m : M | (m : M ⧸ S) = x }) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
+/- warning: image_norm_nonempty -> image_norm_nonempty is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Set.Nonempty.{0} Real (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x)))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Set.Nonempty.{0} Real (Set.image.{u1, 0} M Real (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1)) (setOf.{u1} M (fun (m : M) => Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x)))
+Case conversion may be inaccurate. Consider using '#align image_norm_nonempty image_norm_nonemptyₓ'. -/
theorem image_norm_nonempty {S : AddSubgroup M} :
∀ x : M ⧸ S, (norm '' { m | mk' S m = x }).Nonempty :=
by
@@ -123,13 +137,21 @@ theorem image_norm_nonempty {S : AddSubgroup M} :
rfl
#align image_norm_nonempty image_norm_nonempty
+#print bddBelow_image_norm /-
theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
by
use 0
rintro _ ⟨x, hx, rfl⟩
apply norm_nonneg
#align bdd_below_image_norm bddBelow_image_norm
+-/
+/- warning: quotient_norm_neg -> quotient_norm_neg is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (Neg.neg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasNeg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))) x)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (Neg.neg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toNeg.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) x)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
+Case conversion may be inaccurate. Consider using '#align quotient_norm_neg quotient_norm_negₓ'. -/
/-- The norm on the quotient satisfies `‖-x‖ = ‖x‖`. -/
theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖ :=
by
@@ -143,10 +165,22 @@ theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖
exact ⟨-m, by simpa using neg_eq_iff_eq_neg.mpr ((mk'_apply _ _).symm.trans hm)⟩
#align quotient_norm_neg quotient_norm_neg
+/- warning: quotient_norm_sub_rev -> quotient_norm_sub_rev is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) x y)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toHasSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) y x))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) x y)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HSub.hSub.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toSub.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) y x))
+Case conversion may be inaccurate. Consider using '#align quotient_norm_sub_rev quotient_norm_sub_revₓ'. -/
theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖ = ‖y - x‖ := by
rw [show x - y = -(y - x) by abel, quotient_norm_neg]
#align quotient_norm_sub_rev quotient_norm_sub_rev
+/- warning: quotient_norm_mk_le -> quotient_norm_mk_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m)
+Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le quotient_norm_mk_leₓ'. -/
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
by
@@ -158,11 +192,23 @@ theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m
rw [Set.mem_setOf_eq]
#align quotient_norm_mk_le quotient_norm_mk_le
+/- warning: quotient_norm_mk_le' -> quotient_norm_mk_le' is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasLiftT.mk.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (CoeTCₓ.coe.{succ u1, succ u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (quotientAddGroup.HasQuotient.Quotient.hasCoeT.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S))) m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (QuotientAddGroup.mk.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m)
+Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_le' quotient_norm_mk_le'ₓ'. -/
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S m
#align quotient_norm_mk_le' quotient_norm_mk_le'
+/- warning: quotient_norm_mk_eq -> quotient_norm_mk_eq is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.infₛ.{0} Real Real.hasInf (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (InfSet.infₛ.{0} Real Real.instInfSetReal (Set.image.{u1, 0} M Real (fun (x : M) => Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m x)) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
+Case conversion may be inaccurate. Consider using '#align quotient_norm_mk_eq quotient_norm_mk_eqₓ'. -/
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
‖mk' S m‖ = infₛ ((fun x => ‖m + x‖) '' S) :=
@@ -180,6 +226,12 @@ theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
simpa using h
#align quotient_norm_mk_eq quotient_norm_mk_eq
+/- warning: quotient_norm_nonneg -> quotient_norm_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x)
+Case conversion may be inaccurate. Consider using '#align quotient_norm_nonneg quotient_norm_nonnegₓ'. -/
/-- The quotient norm is nonnegative. -/
theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x‖ :=
by
@@ -190,11 +242,23 @@ theorem quotient_norm_nonneg (S : AddSubgroup M) : ∀ x : M ⧸ S, 0 ≤ ‖x
apply norm_nonneg
#align quotient_norm_nonneg quotient_norm_nonneg
+/- warning: norm_mk_nonneg -> norm_mk_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m))
+Case conversion may be inaccurate. Consider using '#align norm_mk_nonneg norm_mk_nonnegₓ'. -/
/-- The quotient norm is nonnegative. -/
theorem norm_mk_nonneg (S : AddSubgroup M) (m : M) : 0 ≤ ‖mk' S m‖ :=
quotient_norm_nonneg S _
#align norm_mk_nonneg norm_mk_nonneg
+/- warning: quotient_norm_eq_zero_iff -> quotient_norm_eq_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Iff (Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) m (closure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Iff (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) m (closure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)))
+Case conversion may be inaccurate. Consider using '#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iffₓ'. -/
/-- The norm of the image of `m : M` in the quotient by `S` is zero if and only if `m` belongs
to the closure of `S`. -/
theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
@@ -222,6 +286,12 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
use 0, S.zero_mem
#align quotient_norm_eq_zero_iff quotient_norm_eq_zero_iff
+/- warning: norm_mk_lt -> norm_mk_lt is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))} (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))))
+Case conversion may be inaccurate. Consider using '#align norm_mk_lt norm_mk_ltₓ'. -/
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `mk' S m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
@@ -233,6 +303,12 @@ theorem norm_mk_lt {S : AddSubgroup M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
exact ⟨m, rfl, hnorm⟩
#align norm_mk_lt norm_mk_lt
+/- warning: norm_mk_lt' -> norm_mk_lt' is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (s : M) => Exists.{0} (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) (fun (H : Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) => LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m s)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) ε))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (s : M) => And (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) (HAdd.hAdd.{u1, u1, u1} M M M (instHAdd.{u1} M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))))) m s)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) a) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) ε))))
+Case conversion may be inaccurate. Consider using '#align norm_mk_lt' norm_mk_lt'ₓ'. -/
/-- For any `m : M` and any `0 < ε`, there is `s ∈ S` such that `‖m + s‖ < ‖mk' S m‖ + ε`. -/
theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
∃ s ∈ S, ‖m + s‖ < ‖mk' S m‖ + ε :=
@@ -244,6 +320,12 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
rwa [add_neg_cancel_left]
#align norm_mk_lt' norm_mk_lt'
+/- warning: quotient_norm_add_le -> quotient_norm_add_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HAdd.hAdd.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))) x y)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) y))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (y : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (HAdd.hAdd.{u1, u1, u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (instHAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))) x y)) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) y))
+Case conversion may be inaccurate. Consider using '#align quotient_norm_add_le quotient_norm_add_leₓ'. -/
/-- The quotient norm satisfies the triangle inequality. -/
theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖ ≤ ‖x‖ + ‖y‖ :=
by
@@ -259,6 +341,12 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
#align quotient_norm_add_le quotient_norm_add_le
+/- warning: norm_mk_zero -> norm_mk_zero is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (OfNat.mk.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.zero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))))) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.toOfNat0.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))))) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))
+Case conversion may be inaccurate. Consider using '#align norm_mk_zero norm_mk_zeroₓ'. -/
/-- The quotient norm of `0` is `0`. -/
theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
by
@@ -266,12 +354,24 @@ theorem norm_mk_zero (S : AddSubgroup M) : ‖(0 : M ⧸ S)‖ = 0 :=
exact subset_closure S.zero_mem
#align norm_mk_zero norm_mk_zero
+/- warning: norm_zero_eq_zero -> norm_mk_eq_zero is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)) -> (forall (m : M), (Eq.{1} Real (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) m S))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) -> (forall (m : M), (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) m) (normOnQuotient.{u1} M _inst_1 S) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) m S))
+Case conversion may be inaccurate. Consider using '#align norm_zero_eq_zero norm_mk_eq_zeroₓ'. -/
/-- If `(m : M)` has norm equal to `0` in `M ⧸ S` for a closed subgroup `S` of `M`, then
`m ∈ S`. -/
-theorem norm_zero_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
+theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
(h : ‖mk' S m‖ = 0) : m ∈ S := by rwa [quotient_norm_eq_zero_iff, hS.closure_eq] at h
-#align norm_zero_eq_zero norm_zero_eq_zero
-
+#align norm_zero_eq_zero norm_mk_eq_zero
+
+/- warning: quotient_nhd_basis -> quotient_nhd_basis is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Filter.HasBasis.{u1, 1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) Real (nhds.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.topologicalSpace.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (OfNat.mk.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.zero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toHasZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))))) (fun (ε : Real) => LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) (fun (ε : Real) => setOf.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), Filter.HasBasis.{u1, 1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) Real (nhds.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.topologicalSpace.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) S) (OfNat.ofNat.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) 0 (Zero.toOfNat0.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (NegZeroClass.toZero.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegZeroMonoid.toNegZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionMonoid.toSubNegZeroMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubtractionCommMonoid.toSubtractionMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddCommGroup.toDivisionAddCommMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addCommGroup.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))))))) (fun (ε : Real) => LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) (fun (ε : Real) => setOf.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (normOnQuotient.{u1} M _inst_1 S) x) ε))
+Case conversion may be inaccurate. Consider using '#align quotient_nhd_basis quotient_nhd_basisₓ'. -/
theorem quotient_nhd_basis (S : AddSubgroup M) :
(𝓝 (0 : M ⧸ S)).HasBasis (fun ε : ℝ => 0 < ε) fun ε => { x | ‖x‖ < ε } :=
⟨by
@@ -306,6 +406,7 @@ theorem quotient_nhd_basis (S : AddSubgroup M) :
· exact ⟨(0 : M), mem_ball_self ε_pos, (mk' S).map_zero⟩⟩
#align quotient_nhd_basis quotient_nhd_basis
+#print AddSubgroup.seminormedAddCommGroupQuotient /-
/-- The seminormed group structure on the quotient by an additive subgroup. -/
noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgroup M) :
SeminormedAddCommGroup (M ⧸ S) where
@@ -340,6 +441,7 @@ noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgro
exact fun a b h h' => h
· simp
#align add_subgroup.seminormed_add_comm_group_quotient AddSubgroup.seminormedAddCommGroupQuotient
+-/
-- This is a sanity check left here on purpose to ensure that potential refactors won't destroy
-- this important property.
@@ -348,6 +450,12 @@ example (S : AddSubgroup M) :
S.seminormedAddCommGroupQuotient.toUniformSpace.toTopologicalSpace :=
rfl
+/- warning: add_subgroup.normed_add_comm_group_quotient -> AddSubgroup.normedAddCommGroupQuotient is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) [_inst_3 : IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) S)], NormedAddCommGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) [_inst_3 : IsClosed.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)], NormedAddCommGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)
+Case conversion may be inaccurate. Consider using '#align add_subgroup.normed_add_comm_group_quotient AddSubgroup.normedAddCommGroupQuotientₓ'. -/
/-- The quotient in the category of normed groups. -/
noncomputable instance AddSubgroup.normedAddCommGroupQuotient (S : AddSubgroup M)
[IsClosed (S : Set M)] : NormedAddCommGroup (M ⧸ S) :=
@@ -369,33 +477,57 @@ namespace AddSubgroup
open NormedAddGroupHom
+#print AddSubgroup.normedMk /-
/-- The morphism from a seminormed group to the quotient by a subgroup. -/
noncomputable def normedMk (S : AddSubgroup M) : NormedAddGroupHom M (M ⧸ S) :=
{ QuotientAddGroup.mk' S with
bound' := ⟨1, fun m => by simpa [one_mul] using quotient_norm_mk_le _ m⟩ }
#align add_subgroup.normed_mk AddSubgroup.normedMk
+-/
+/- warning: add_subgroup.normed_mk.apply -> AddSubgroup.normedMk.apply is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (fun (_x : NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (NormedAddGroupHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S) m) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (fun (_x : AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (AddMonoidHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (m : M), Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (fun (_x : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))) (AddSubgroup.normedMk.{u1} M _inst_1 S) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (QuotientAddGroup.Quotient.addGroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)))))))) (QuotientAddGroup.mk'.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) S (AddSubgroup.normal_of_comm.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) S)) m)
+Case conversion may be inaccurate. Consider using '#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.applyₓ'. -/
/-- `S.normed_mk` agrees with `quotient_add_group.mk' S`. -/
@[simp]
theorem normedMk.apply (S : AddSubgroup M) (m : M) : normedMk S m = QuotientAddGroup.mk' S m :=
rfl
#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.apply
+#print AddSubgroup.surjective_normedMk /-
/-- `S.normed_mk` is surjective. -/
theorem surjective_normedMk (S : AddSubgroup M) : Function.Surjective (normedMk S) :=
surjective_quot_mk _
#align add_subgroup.surjective_normed_mk AddSubgroup.surjective_normedMk
+-/
+#print AddSubgroup.ker_normedMk /-
/-- The kernel of `S.normed_mk` is `S`. -/
theorem ker_normedMk (S : AddSubgroup M) : S.normedMk.ker = S :=
QuotientAddGroup.ker_mk' _
#align add_subgroup.ker_normed_mk AddSubgroup.ker_normedMk
+-/
+/- warning: add_subgroup.norm_normed_mk_le -> AddSubgroup.norm_normedMk_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_leₓ'. -/
/-- The operator norm of the projection is at most `1`. -/
theorem norm_normedMk_le (S : AddSubgroup M) : ‖S.normedMk‖ ≤ 1 :=
NormedAddGroupHom.opNorm_le_bound _ zero_le_one fun m => by simp [quotient_norm_mk_le']
#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_le
+/- warning: add_subgroup.norm_normed_mk -> AddSubgroup.norm_normedMk is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Ne.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMkₓ'. -/
/-- The operator norm of the projection is `1` if the subspace is not dense. -/
theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M) ≠ univ) :
‖S.normedMk‖ = 1 := by
@@ -439,6 +571,12 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMk
+/- warning: add_subgroup.norm_trivial_quotient_mk -> AddSubgroup.norm_trivial_quotient_mk is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))), (Eq.{succ u1} (Set.{u1} M) (SetLike.coe.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (AddSubgroup.topologicalClosure.{u1} M (UniformSpace.toTopologicalSpace.{u1} M (PseudoMetricSpace.toUniformSpace.{u1} M (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} M _inst_1))) (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)) (SeminormedAddCommGroup.to_topologicalAddGroup.{u1} M _inst_1) S)) (Set.univ.{u1} M)) -> (Eq.{1} Real (Norm.norm.{u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (NormedAddGroupHom.hasOpNorm.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S)) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))
+Case conversion may be inaccurate. Consider using '#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mkₓ'. -/
/-- The operator norm of the projection is `0` if the subspace is dense. -/
theorem norm_trivial_quotient_mk (S : AddSubgroup M)
(h : (S.topologicalClosure : Set M) = Set.univ) : ‖S.normedMk‖ = 0 :=
@@ -456,13 +594,21 @@ end AddSubgroup
namespace NormedAddGroupHom
+#print NormedAddGroupHom.IsQuotient /-
/-- `is_quotient f`, for `f : M ⟶ N` means that `N` is isomorphic to the quotient of `M`
by the kernel of `f`. -/
structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
Surjective : Function.Surjective f
norm : ∀ x, ‖f x‖ = infₛ ((fun m => ‖x + m‖) '' f.ker)
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
+-/
+/- warning: normed_add_group_hom.lift -> NormedAddGroupHom.lift is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3), (forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) -> (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3), (forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) -> (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift NormedAddGroupHom.liftₓ'. -/
/-- Given `f : normed_add_group_hom M N` such that `f s = 0` for all `s ∈ S`, where,
`S : add_subgroup M` is closed, the induced morphism `normed_add_group_hom (M ⧸ S) N`. -/
noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
@@ -480,12 +626,24 @@ noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup
}
#align normed_add_group_hom.lift NormedAddGroupHom.lift
+/- warning: normed_add_group_hom.lift_mk -> NormedAddGroupHom.lift_mk is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) (m : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) => (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf) (coeFn.{succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (fun (_x : NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) => M -> (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S)) (NormedAddGroupHom.hasCoeToFun.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) (AddSubgroup.normedMk.{u1} M _inst_1 S) m)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f m)
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) (m : M), Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (fun (_x : HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3))) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf) (FunLike.coe.{succ u1, succ u1, succ u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (fun (_x : M) => HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddHomClass.toFunLike.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (NormedAddGroupHom.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)) M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SubNegMonoid.toAddMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddGroup.toSubNegMonoid.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddGroup.toAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u1} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S)))) (AddSubgroup.normedMk.{u1} M _inst_1 S) m)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f m)
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mkₓ'. -/
theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (m : M) :
lift S f hf (S.normedMk m) = f m :=
rfl
#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mk
+/- warning: normed_add_group_hom.lift_unique -> NormedAddGroupHom.lift_unique is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) (g : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3), (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.comp.{u1, u1, u2} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 g (AddSubgroup.normedMk.{u1} M _inst_1 S)) f) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) g (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) (g : NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3), (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.comp.{u1, u1, u2} M (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N _inst_1 (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 g (AddSubgroup.normedMk.{u1} M _inst_1 S)) f) -> (Eq.{max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) g (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_unique NormedAddGroupHom.lift_uniqueₓ'. -/
theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (g : NormedAddGroupHom (M ⧸ S) N) :
g.comp S.normedMk = f → g = lift S f hf :=
@@ -497,11 +655,19 @@ theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
simpa only [h]
#align normed_add_group_hom.lift_unique NormedAddGroupHom.lift_unique
+#print NormedAddGroupHom.isQuotientQuotient /-
/-- `S.normed_mk` satisfies `is_quotient`. -/
theorem isQuotientQuotient (S : AddSubgroup M) : IsQuotient S.normedMk :=
⟨S.surjective_normedMk, fun m => by simpa [S.ker_normed_mk] using quotient_norm_mk_eq _ m⟩
#align normed_add_group_hom.is_quotient_quotient NormedAddGroupHom.isQuotientQuotient
+-/
+/- warning: normed_add_group_hom.is_quotient.norm_lift -> NormedAddGroupHom.IsQuotient.norm_lift is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} {N : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} M] [_inst_2 : SeminormedAddCommGroup.{u2} N] {f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u1, u2} M N _inst_1 _inst_2 f) -> (forall {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (forall (n : N), Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_2) f m) n) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u2} N (SeminormedAddCommGroup.toHasNorm.{u2} N _inst_2) n) ε)))))
+but is expected to have type
+ forall {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} M] [_inst_2 : SeminormedAddCommGroup.{u1} N] {f : NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u2, u1} M N _inst_1 _inst_2 f) -> (forall {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (forall (n : N), Exists.{succ u2} M (fun (m : M) => And (Eq.{succ u1} N (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1)))))) (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} M N _inst_1 _inst_2))) f m) n) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} N (SeminormedAddCommGroup.toNorm.{u1} N _inst_2) n) ε)))))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_liftₓ'. -/
theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f) {ε : ℝ} (hε : 0 < ε)
(n : N) : ∃ m : M, f m = n ∧ ‖m‖ < ‖n‖ + ε :=
by
@@ -516,6 +682,12 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
⟨m + x, by rw [map_add, (NormedAddGroupHom.mem_ker f x).mp hx, add_zero], by rwa [hquot.norm]⟩
#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_lift
+/- warning: normed_add_group_hom.is_quotient.norm_le -> NormedAddGroupHom.IsQuotient.norm_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} {N : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} M] [_inst_2 : SeminormedAddCommGroup.{u2} N] {f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u1, u2} M N _inst_1 _inst_2 f) -> (forall (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} N (SeminormedAddCommGroup.toHasNorm.{u2} N _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_2) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_2) f m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m))
+but is expected to have type
+ forall {M : Type.{u2}} {N : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u2} M] [_inst_2 : SeminormedAddCommGroup.{u1} N] {f : NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2}, (NormedAddGroupHom.IsQuotient.{u2, u1} M N _inst_1 _inst_2 f) -> (forall (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} N (SeminormedAddCommGroup.toNorm.{u1} N _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1)))))) (AddZeroClass.toAdd.{u1} N (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (NormedAddGroupHom.{u2, u1} M N _inst_1 _inst_2) M N (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (SeminormedAddGroup.toAddGroup.{u2} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} M _inst_1))))) (AddMonoid.toAddZeroClass.{u1} N (SubNegMonoid.toAddMonoid.{u1} N (AddGroup.toSubNegMonoid.{u1} N (SeminormedAddGroup.toAddGroup.{u1} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} N _inst_2))))) (NormedAddGroupHom.toAddMonoidHomClass.{u2, u1} M N _inst_1 _inst_2))) f m)) (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_leₓ'. -/
theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m : M) :
‖f m‖ ≤ ‖m‖ := by
rw [hquot.norm]
@@ -526,6 +698,12 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
· exact ⟨0, f.ker.zero_mem, by simp⟩
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
+/- warning: normed_add_group_hom.lift_norm_le -> NormedAddGroupHom.lift_norm_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))) {c : NNReal}, (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} M N _inst_1 _inst_3) f) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) c)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) c))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))) {c : NNReal}, (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} M N _inst_1 _inst_3) f) (NNReal.toReal c)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{max u1 u2} (NormedAddGroupHom.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.hasOpNorm.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3) (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf)) (NNReal.toReal c))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_leₓ'. -/
theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c := by
@@ -556,6 +734,12 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
exact_mod_cast hc.ne'
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
+/- warning: normed_add_group_hom.lift_norm_noninc -> NormedAddGroupHom.lift_normNoninc is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.Mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.setLike.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (fun (_x : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) => M -> N) (NormedAddGroupHom.hasCoeToFun.{u1, u2} M N _inst_1 _inst_3) f s) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (AddZeroClass.toHasZero.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))))))))), (NormedAddGroupHom.NormNoninc.{u1, u2} M N _inst_1 _inst_3 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (quotientAddGroup.Subgroup.hasQuotient.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {N : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} N] (S : AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (f : NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) (hf : forall (s : M), (Membership.mem.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) M (AddSubgroup.instSetLikeAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))) s S) -> (Eq.{succ u2} N (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M (fun (_x : M) => N) (AddHomClass.toFunLike.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1)))))) (AddZeroClass.toAdd.{u2} N (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3)))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, u2} (NormedAddGroupHom.{u1, u2} M N _inst_1 _inst_3) M N (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))))) (AddMonoid.toAddZeroClass.{u2} N (SubNegMonoid.toAddMonoid.{u2} N (AddGroup.toSubNegMonoid.{u2} N (SeminormedAddGroup.toAddGroup.{u2} N (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} N _inst_3))))) (NormedAddGroupHom.toAddMonoidHomClass.{u1, u2} M N _inst_1 _inst_3))) f s) (OfNat.ofNat.{u2} N 0 (Zero.toOfNat0.{u2} N (NegZeroClass.toZero.{u2} N (SubNegZeroMonoid.toNegZeroClass.{u2} N (SubtractionMonoid.toSubNegZeroMonoid.{u2} N (SubtractionCommMonoid.toSubtractionMonoid.{u2} N (AddCommGroup.toDivisionAddCommMonoid.{u2} N (SeminormedAddCommGroup.toAddCommGroup.{u2} N _inst_3)))))))))), (NormedAddGroupHom.NormNoninc.{u1, u2} M N _inst_1 _inst_3 f) -> (NormedAddGroupHom.NormNoninc.{u1, u2} (HasQuotient.Quotient.{u1, u1} M (AddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) (QuotientAddGroup.instHasQuotientAddSubgroup.{u1} M (SeminormedAddGroup.toAddGroup.{u1} M (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} M _inst_1))) S) N (AddSubgroup.seminormedAddCommGroupQuotient.{u1} M _inst_1 S) _inst_3 (NormedAddGroupHom.lift.{u1, u2} M _inst_1 N _inst_3 S f hf))
+Case conversion may be inaccurate. Consider using '#align normed_add_group_hom.lift_norm_noninc NormedAddGroupHom.lift_normNonincₓ'. -/
theorem lift_normNoninc {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (fb : f.NormNoninc) :
(lift S f hf).NormNoninc := fun x =>
@@ -585,19 +769,31 @@ section Submodule
variable {R : Type _} [Ring R] [Module R M] (S : Submodule R M)
+#print Submodule.Quotient.seminormedAddCommGroup /-
instance Submodule.Quotient.seminormedAddCommGroup : SeminormedAddCommGroup (M ⧸ S) :=
AddSubgroup.seminormedAddCommGroupQuotient S.toAddSubgroup
#align submodule.quotient.seminormed_add_comm_group Submodule.Quotient.seminormedAddCommGroup
+-/
+#print Submodule.Quotient.normedAddCommGroup /-
instance Submodule.Quotient.normedAddCommGroup [hS : IsClosed (S : Set M)] :
NormedAddCommGroup (M ⧸ S) :=
@AddSubgroup.normedAddCommGroupQuotient _ _ S.toAddSubgroup hS
#align submodule.quotient.normed_add_comm_group Submodule.Quotient.normedAddCommGroup
+-/
+#print Submodule.Quotient.completeSpace /-
instance Submodule.Quotient.completeSpace [CompleteSpace M] : CompleteSpace (M ⧸ S) :=
QuotientAddGroup.completeSpace M S.toAddSubgroup
#align submodule.quotient.complete_space Submodule.Quotient.completeSpace
+-/
+/- warning: submodule.quotient.norm_mk_lt -> Submodule.Quotient.norm_mk_lt is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] {S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4} (x : HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) x) ε))))
+but is expected to have type
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] {S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4} (x : HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} M (fun (m : M) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} M (SeminormedAddCommGroup.toNorm.{u1} M _inst_1) m) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) x) ε))))
+Case conversion may be inaccurate. Consider using '#align submodule.quotient.norm_mk_lt Submodule.Quotient.norm_mk_ltₓ'. -/
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `submodule.quotient.mk m = x`
and `‖m‖ < ‖x‖ + ε`. -/
theorem Submodule.Quotient.norm_mk_lt {S : Submodule R M} (x : M ⧸ S) {ε : ℝ} (hε : 0 < ε) :
@@ -605,10 +801,17 @@ theorem Submodule.Quotient.norm_mk_lt {S : Submodule R M} (x : M ⧸ S) {ε :
norm_mk_lt x hε
#align submodule.quotient.norm_mk_lt Submodule.Quotient.norm_mk_lt
+/- warning: submodule.quotient.norm_mk_le -> Submodule.Quotient.norm_mk_le is a dubious translation:
+lean 3 declaration is
+ forall {M : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} M] {R : Type.{u2}} [_inst_3 : Ring.{u2} R] [_inst_4 : Module.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1))] (S : Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (m : M), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} M (Submodule.{u2, u1} R M (Ring.toSemiring.{u2} R _inst_3) (AddCommGroup.toAddCommMonoid.{u1} M (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u1, u2} M _inst_1 R _inst_3 _inst_4 S)) (Submodule.Quotient.mk.{u2, u1} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u1} M _inst_1) _inst_4 S m)) (Norm.norm.{u1} M (SeminormedAddCommGroup.toHasNorm.{u1} M _inst_1) m)
+but is expected to have type
+ forall {M : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u2} M] {R : Type.{u1}} [_inst_3 : Ring.{u1} R] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1))] (S : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (m : M), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} (HasQuotient.Quotient.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4) S) (SeminormedAddCommGroup.toNorm.{u2} (HasQuotient.Quotient.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_3) (AddCommGroup.toAddCommMonoid.{u2} M (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1)) _inst_4) (Submodule.hasQuotient.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4) S) (Submodule.Quotient.seminormedAddCommGroup.{u2, u1} M _inst_1 R _inst_3 _inst_4 S)) (Submodule.Quotient.mk.{u1, u2} R M _inst_3 (SeminormedAddCommGroup.toAddCommGroup.{u2} M _inst_1) _inst_4 S m)) (Norm.norm.{u2} M (SeminormedAddCommGroup.toNorm.{u2} M _inst_1) m)
+Case conversion may be inaccurate. Consider using '#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_leₓ'. -/
theorem Submodule.Quotient.norm_mk_le (m : M) : ‖(Submodule.Quotient.mk m : M ⧸ S)‖ ≤ ‖m‖ :=
quotient_norm_mk_le S.toAddSubgroup m
#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_le
+#print Submodule.Quotient.normedSpace /-
instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [NormedSpace 𝕜 M] [SMul 𝕜 R]
[IsScalarTower 𝕜 R M] : NormedSpace 𝕜 (M ⧸ S) :=
{ Submodule.Quotient.module' S with
@@ -627,6 +830,7 @@ instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [Norm
_ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
}
#align submodule.quotient.normed_space Submodule.Quotient.normedSpace
+-/
end Submodule
@@ -634,15 +838,28 @@ section Ideal
variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
+/- warning: ideal.quotient.norm_mk_lt -> Ideal.Quotient.norm_mk_lt is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) x) ε))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] {I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))} (x : HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) {ε : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u1} R (fun (r : R) => And (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r) x) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r) (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) I)) x) ε))))
+Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_ltₓ'. -/
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
norm_mk_lt x hε
#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_lt
+/- warning: ideal.quotient.norm_mk_le -> Ideal.Quotient.norm_mk_le is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (SeminormedAddCommGroup.toHasNorm.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)))) I)) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (fun (_x : RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) => R -> (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I)) (RingHom.hasCoeToFun.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.hasQuotient.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toHasNorm.{u1} R (SeminormedCommRing.toSemiNormedRing.{u1} R _inst_3)) r)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_3 : SeminormedCommRing.{u1} R] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) (r : R), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (SeminormedAddCommGroup.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) r) (Submodule.Quotient.seminormedAddCommGroup.{u1, u1} R (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} R (SeminormedRing.toNonUnitalSeminormedRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3))) R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (SeminormedRing.toRing.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)))) I)) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))))) (NonUnitalNonAssocSemiring.toMul.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3))))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I))))) R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))) (RingHom.instRingHomClassRingHom.{u1, u1} R (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (NonAssocRing.toNonAssocSemiring.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ring.toNonAssocRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (CommRing.toRing.{u1} (HasQuotient.Quotient.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)))) (Ideal.instHasQuotientIdealToSemiringToRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3)) I) (Ideal.Quotient.commRing.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I)))))))) (Ideal.Quotient.mk.{u1} R (SeminormedCommRing.toCommRing.{u1} R _inst_3) I) r)) (Norm.norm.{u1} R (SeminormedRing.toNorm.{u1} R (SeminormedCommRing.toSeminormedRing.{u1} R _inst_3)) r)
+Case conversion may be inaccurate. Consider using '#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_leₓ'. -/
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_le
+#print Ideal.Quotient.semiNormedCommRing /-
instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
{
Submodule.Quotient.seminormedAddCommGroup
@@ -667,16 +884,21 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
_ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
}
#align ideal.quotient.semi_normed_comm_ring Ideal.Quotient.semiNormedCommRing
+-/
+#print Ideal.Quotient.normedCommRing /-
instance Ideal.Quotient.normedCommRing [IsClosed (I : Set R)] : NormedCommRing (R ⧸ I) :=
{ Ideal.Quotient.semiNormedCommRing I, Submodule.Quotient.normedAddCommGroup I with }
#align ideal.quotient.normed_comm_ring Ideal.Quotient.normedCommRing
+-/
variable (𝕜 : Type _) [NormedField 𝕜]
+#print Ideal.Quotient.normedAlgebra /-
instance Ideal.Quotient.normedAlgebra [NormedAlgebra 𝕜 R] : NormedAlgebra 𝕜 (R ⧸ I) :=
{ Submodule.Quotient.normedSpace I 𝕜, Ideal.Quotient.algebra 𝕜 with }
#align ideal.quotient.normed_algebra Ideal.Quotient.normedAlgebra
+-/
end Ideal
mathlib commit https://github.com/leanprover-community/mathlib/commit/2196ab363eb097c008d4497125e0dde23fb36db2
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
! This file was ported from Lean 3 source module analysis.normed.group.quotient
-! leanprover-community/mathlib commit e7f0ddbf65bd7181a85edb74b64bdc35ba4bdc74
+! leanprover-community/mathlib commit 2196ab363eb097c008d4497125e0dde23fb36db2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -140,7 +140,7 @@ theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖
rw [← norm_neg]
exact ⟨-m, by simp only [(mk' S).map_neg, Set.mem_setOf_eq], rfl⟩
· rintro ⟨m, hm : mk' S m = -x, rfl⟩
- exact ⟨-m, by simpa [eq_comm] using eq_neg_iff_eq_neg.mp ((mk'_apply _ _).symm.trans hm)⟩
+ exact ⟨-m, by simpa using neg_eq_iff_eq_neg.mpr ((mk'_apply _ _).symm.trans hm)⟩
#align quotient_norm_neg quotient_norm_neg
theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖ = ‖y - x‖ := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/2af0836443b4cfb5feda0df0051acdb398304931
@@ -632,7 +632,7 @@ end Submodule
section Ideal
-variable {R : Type _} [SemiNormedCommRing R] (I : Ideal R)
+variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
@@ -643,7 +643,7 @@ theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r
quotient_norm_mk_le I.toAddSubgroup r
#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_le
-instance Ideal.Quotient.semiNormedCommRing : SemiNormedCommRing (R ⧸ I) :=
+instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) :=
{
Submodule.Quotient.seminormedAddCommGroup
I with
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -449,7 +449,7 @@ theorem norm_trivial_quotient_mk (S : AddSubgroup M)
rw [S.ker_normed_mk]
exact Set.mem_of_eq_of_mem h trivial
rw [ker_normed_mk] at hker
- simp only [(quotient_norm_eq_zero_iff S x).mpr hker, normed_mk.apply, zero_mul]
+ simp only [(quotient_norm_eq_zero_iff S x).mpr hker, normed_mk.apply, MulZeroClass.zero_mul]
#align add_subgroup.norm_trivial_quotient_mk AddSubgroup.norm_trivial_quotient_mk
end AddSubgroup
@@ -532,12 +532,12 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
apply op_norm_le_bound _ c.coe_nonneg
intro x
by_cases hc : c = 0
- · simp only [hc, NNReal.coe_zero, zero_mul] at fb⊢
+ · simp only [hc, NNReal.coe_zero, MulZeroClass.zero_mul] at fb⊢
obtain ⟨x, rfl⟩ := surjective_quot_mk _ x
show ‖f x‖ ≤ 0
calc
‖f x‖ ≤ 0 * ‖x‖ := f.le_of_op_norm_le fb x
- _ = 0 := zero_mul _
+ _ = 0 := MulZeroClass.zero_mul _
· replace hc : 0 < c := pos_iff_ne_zero.mpr hc
apply le_of_forall_pos_le_add
mathlib commit https://github.com/leanprover-community/mathlib/commit/ddec54a71a0dd025c05445d467f1a2b7d586a3ba
@@ -393,7 +393,7 @@ theorem ker_normedMk (S : AddSubgroup M) : S.normedMk.ker = S :=
/-- The operator norm of the projection is at most `1`. -/
theorem norm_normedMk_le (S : AddSubgroup M) : ‖S.normedMk‖ ≤ 1 :=
- NormedAddGroupHom.op_norm_le_bound _ zero_le_one fun m => by simp [quotient_norm_mk_le']
+ NormedAddGroupHom.opNorm_le_bound _ zero_le_one fun m => by simp [quotient_norm_mk_le']
#align add_subgroup.norm_normed_mk_le AddSubgroup.norm_normedMk_le
/-- The operator norm of the projection is `1` if the subspace is not dense. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -104,7 +104,7 @@ open Topology NNReal
variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
/-- The definition of the norm on the quotient by an additive subgroup. -/
-noncomputable instance normOnQuotient (S : AddSubgroup M) : HasNorm (M ⧸ S)
+noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S)
where norm x := infₛ (norm '' { m | mk' S m = x })
#align norm_on_quotient normOnQuotient
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
! This file was ported from Lean 3 source module analysis.normed.group.quotient
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit e7f0ddbf65bd7181a85edb74b64bdc35ba4bdc74
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Analysis.NormedSpace.Basic
import Mathbin.Analysis.Normed.Group.Hom
+import Mathbin.RingTheory.Ideal.QuotientOperations
/-!
# Quotients of seminormed groups
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -252,8 +252,8 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
obtain ⟨n, rfl, hn : ‖n‖ < ‖mk' S n‖ + ε / 2⟩ := norm_mk_lt y hε
calc
‖mk' S m + mk' S n‖ = ‖mk' S (m + n)‖ := by rw [(mk' S).map_add]
- _ ≤ ‖m + n‖ := quotient_norm_mk_le S (m + n)
- _ ≤ ‖m‖ + ‖n‖ := norm_add_le _ _
+ _ ≤ ‖m + n‖ := (quotient_norm_mk_le S (m + n))
+ _ ≤ ‖m‖ + ‖n‖ := (norm_add_le _ _)
_ ≤ ‖mk' S m‖ + ‖mk' S n‖ + ε := by linarith
#align quotient_norm_add_le quotient_norm_add_le
@@ -433,7 +433,7 @@ theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M)
calc
‖S.normed_mk‖ ≥ ‖S.normed_mk m‖ / ‖m‖ := ratio_le_op_norm S.normed_mk m
_ = ‖y‖ / ‖m‖ := by rw [normed_mk.apply, hm]
- _ ≥ (1 + min ε (1 / 2) / (1 - min ε (1 / 2)))⁻¹ := le_of_lt hlt
+ _ ≥ (1 + min ε (1 / 2) / (1 - min ε (1 / 2)))⁻¹ := (le_of_lt hlt)
_ = 1 - min ε (1 / 2) := by field_simp [(ne_of_lt hδ).symm]
#align add_subgroup.norm_normed_mk AddSubgroup.norm_normedMk
@@ -547,7 +547,7 @@ theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
rw [lift_mk]
calc
‖f x‖ ≤ c * ‖x‖ := f.le_of_op_norm_le fb x
- _ ≤ c * (‖S.normed_mk x‖ + ε / c) := (mul_le_mul_left _).mpr Hx.le
+ _ ≤ c * (‖S.normed_mk x‖ + ε / c) := ((mul_le_mul_left _).mpr Hx.le)
_ = c * _ + ε := _
· exact_mod_cast hc
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -594,7 +594,7 @@ instance Submodule.Quotient.normedAddCommGroup [hS : IsClosed (S : Set M)] :
#align submodule.quotient.normed_add_comm_group Submodule.Quotient.normedAddCommGroup
instance Submodule.Quotient.completeSpace [CompleteSpace M] : CompleteSpace (M ⧸ S) :=
- quotientAddGroup.completeSpace M S.toAddSubgroup
+ QuotientAddGroup.completeSpace M S.toAddSubgroup
#align submodule.quotient.complete_space Submodule.Quotient.completeSpace
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `submodule.quotient.mk m = x`
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -398,7 +398,7 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
· exact ⟨0, f.ker.zero_mem, by simp⟩
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
--- Porting note: new lemma
+-- Porting note (#10756): new lemma
theorem norm_lift_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) :
‖lift S f hf‖ ≤ ‖f‖ :=
@@ -404,7 +404,7 @@ theorem norm_lift_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
‖lift S f hf‖ ≤ ‖f‖ :=
opNorm_le_bound _ (norm_nonneg f) (norm_lift_apply_le f hf)
--- Porting note: todo: deprecate?
+-- Porting note (#11215): TODO: deprecate?
theorem lift_norm_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c :=
ball
and bex
from lemma names (#10816)
ball
for "bounded forall" and bex
for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem
and exists_mem
in the few Set
lemma names that mention them.
Also deprecate ball_image_of_ball
, mem_image_elim
, mem_image_elim_on
since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image
semi-implicit), have obscure names and are completely unused.
@@ -130,7 +130,7 @@ theorem image_norm_nonempty {S : AddSubgroup M} (x : M ⧸ S) :
#align image_norm_nonempty image_norm_nonempty
theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
- ⟨0, ball_image_iff.2 fun _ _ ↦ norm_nonneg _⟩
+ ⟨0, forall_mem_image.2 fun _ _ ↦ norm_nonneg _⟩
#align bdd_below_image_norm bddBelow_image_norm
theorem isGLB_quotient_norm {S : AddSubgroup M} (x : M ⧸ S) :
@@ -168,7 +168,7 @@ theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
/-- The quotient norm is nonnegative. -/
theorem quotient_norm_nonneg (S : AddSubgroup M) (x : M ⧸ S) : 0 ≤ ‖x‖ :=
- Real.sInf_nonneg _ <| ball_image_iff.2 fun _ _ ↦ norm_nonneg _
+ Real.sInf_nonneg _ <| forall_mem_image.2 fun _ _ ↦ norm_nonneg _
#align quotient_norm_nonneg quotient_norm_nonneg
/-- The quotient norm is nonnegative. -/
@@ -186,7 +186,7 @@ theorem quotient_norm_eq_zero_iff (S : AddSubgroup M) (m : M) :
theorem QuotientAddGroup.norm_lt_iff {S : AddSubgroup M} {x : M ⧸ S} {r : ℝ} :
‖x‖ < r ↔ ∃ m : M, ↑m = x ∧ ‖m‖ < r := by
- rw [isGLB_lt_iff (isGLB_quotient_norm _), bex_image_iff]
+ rw [isGLB_lt_iff (isGLB_quotient_norm _), exists_mem_image]
rfl
/-- For any `x : M ⧸ S` and any `0 < ε`, there is `m : M` such that `mk' S m = x`
@@ -211,7 +211,7 @@ theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖
rcases And.intro (mk_surjective x) (mk_surjective y) with ⟨⟨x, rfl⟩, ⟨y, rfl⟩⟩
simp only [← mk'_apply, ← map_add, quotient_norm_mk_eq, sInf_image']
refine le_ciInf_add_ciInf fun a b ↦ ?_
- refine ciInf_le_of_le ⟨0, forall_range_iff.2 fun _ ↦ norm_nonneg _⟩ (a + b) ?_
+ refine ciInf_le_of_le ⟨0, forall_mem_range.2 fun _ ↦ norm_nonneg _⟩ (a + b) ?_
exact (congr_arg norm (add_add_add_comm _ _ _ _)).trans_le (norm_add_le _ _)
#align quotient_norm_add_le quotient_norm_add_le
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -398,13 +398,13 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
· exact ⟨0, f.ker.zero_mem, by simp⟩
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
--- porting note: new lemma
+-- Porting note: new lemma
theorem norm_lift_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) :
‖lift S f hf‖ ≤ ‖f‖ :=
opNorm_le_bound _ (norm_nonneg f) (norm_lift_apply_le f hf)
--- porting note: todo: deprecate?
+-- Porting note: todo: deprecate?
theorem lift_norm_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c :=
@@ -466,7 +466,7 @@ instance Submodule.Quotient.instBoundedSMul (𝕜 : Type*)
[SeminormedCommRing 𝕜] [Module 𝕜 M] [BoundedSMul 𝕜 M] [SMul 𝕜 R] [IsScalarTower 𝕜 R M] :
BoundedSMul 𝕜 (M ⧸ S) :=
.of_norm_smul_le fun k x =>
- -- porting note: this is `QuotientAddGroup.norm_lift_apply_le` for `f : M → M ⧸ S` given by
+ -- Porting note: this is `QuotientAddGroup.norm_lift_apply_le` for `f : M → M ⧸ S` given by
-- `x ↦ mk (k • x)`; todo: add scalar multiplication as `NormedAddGroupHom`, use it here
_root_.le_of_forall_pos_le_add fun ε hε => by
have := (nhds_basis_ball.tendsto_iff nhds_basis_ball).mp
@@ -318,8 +318,8 @@ theorem _root_.QuotientAddGroup.norm_lift_apply_le {S : AddSubgroup M} (f : Norm
theorem norm_normedMk (S : AddSubgroup M) (h : (S.topologicalClosure : Set M) ≠ univ) :
‖S.normedMk‖ = 1 := by
refine le_antisymm (norm_normedMk_le S) ?_
- obtain ⟨x, hx⟩ : ∃ x : M, 0 < ‖(x : M ⧸ S)‖
- · refine (Set.nonempty_compl.2 h).imp fun x hx ↦ ?_
+ obtain ⟨x, hx⟩ : ∃ x : M, 0 < ‖(x : M ⧸ S)‖ := by
+ refine (Set.nonempty_compl.2 h).imp fun x hx ↦ ?_
exact (norm_nonneg _).lt_of_ne' <| mt (quotient_norm_eq_zero_iff S x).1 hx
refine (le_mul_iff_one_le_left hx).1 ?_
exact norm_lift_apply_le S.normedMk (fun x ↦ (eq_zero_iff x).2) x
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>
@@ -229,8 +229,8 @@ theorem norm_mk_eq_zero (S : AddSubgroup M) (hS : IsClosed (S : Set M)) (m : M)
theorem quotient_nhd_basis (S : AddSubgroup M) :
(𝓝 (0 : M ⧸ S)).HasBasis (fun ε ↦ 0 < ε) fun ε ↦ { x | ‖x‖ < ε } := by
- have : ∀ ε : ℝ, mk '' ball (0 : M) ε = { x : M ⧸ S | ‖x‖ < ε }
- · refine fun ε ↦ Set.ext <| forall_mk.2 fun x ↦ ?_
+ have : ∀ ε : ℝ, mk '' ball (0 : M) ε = { x : M ⧸ S | ‖x‖ < ε } := by
+ refine fun ε ↦ Set.ext <| forall_mk.2 fun x ↦ ?_
rw [ball_zero_eq, mem_setOf_eq, norm_lt_iff, mem_image]
exact exists_congr fun _ ↦ and_comm
rw [← mk_zero, nhds_eq, ← funext this]
Submodule.Quotient.instBoundedSMul
(#10520)
The proof needs minimal modifications to go through for the inequality case.
@@ -462,22 +462,26 @@ theorem Submodule.Quotient.norm_mk_le (m : M) : ‖(Submodule.Quotient.mk m : M
quotient_norm_mk_le S.toAddSubgroup m
#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_le
+instance Submodule.Quotient.instBoundedSMul (𝕜 : Type*)
+ [SeminormedCommRing 𝕜] [Module 𝕜 M] [BoundedSMul 𝕜 M] [SMul 𝕜 R] [IsScalarTower 𝕜 R M] :
+ BoundedSMul 𝕜 (M ⧸ S) :=
+ .of_norm_smul_le fun k x =>
+ -- porting note: this is `QuotientAddGroup.norm_lift_apply_le` for `f : M → M ⧸ S` given by
+ -- `x ↦ mk (k • x)`; todo: add scalar multiplication as `NormedAddGroupHom`, use it here
+ _root_.le_of_forall_pos_le_add fun ε hε => by
+ have := (nhds_basis_ball.tendsto_iff nhds_basis_ball).mp
+ ((@Real.uniformContinuous_const_mul ‖k‖).continuous.tendsto ‖x‖) ε hε
+ simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
+ rcases this with ⟨δ, hδ, h⟩
+ obtain ⟨a, rfl, ha⟩ := Submodule.Quotient.norm_mk_lt x hδ
+ specialize h ‖a‖ ⟨by linarith, by linarith [Submodule.Quotient.norm_mk_le S a]⟩
+ calc
+ _ ≤ ‖k‖ * ‖a‖ := (quotient_norm_mk_le S.toAddSubgroup (k • a)).trans (norm_smul_le k a)
+ _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
+
instance Submodule.Quotient.normedSpace (𝕜 : Type*) [NormedField 𝕜] [NormedSpace 𝕜 M] [SMul 𝕜 R]
- [IsScalarTower 𝕜 R M] : NormedSpace 𝕜 (M ⧸ S) :=
- { Submodule.Quotient.module' S with
- norm_smul_le := fun k x =>
- -- porting note: this is `QuotientAddGroup.norm_lift_apply_le` for `f : M → M ⧸ S` given by
- -- `x ↦ mk (k • x)`; todo: add scalar multiplication as `NormedAddGroupHom`, use it here
- le_of_forall_pos_le_add fun ε hε => by
- have := (nhds_basis_ball.tendsto_iff nhds_basis_ball).mp
- ((@Real.uniformContinuous_const_mul ‖k‖).continuous.tendsto ‖x‖) ε hε
- simp only [mem_ball, exists_prop, dist, abs_sub_lt_iff] at this
- rcases this with ⟨δ, hδ, h⟩
- obtain ⟨a, rfl, ha⟩ := Submodule.Quotient.norm_mk_lt x hδ
- specialize h ‖a‖ ⟨by linarith, by linarith [Submodule.Quotient.norm_mk_le S a]⟩
- calc
- _ ≤ ‖k‖ * ‖a‖ := (quotient_norm_mk_le S.toAddSubgroup (k • a)).trans_eq (norm_smul k a)
- _ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le }
+ [IsScalarTower 𝕜 R M] : NormedSpace 𝕜 (M ⧸ S) where
+ norm_smul_le := norm_smul_le
#align submodule.quotient.normed_space Submodule.Quotient.normedSpace
end Submodule
@@ -5,6 +5,7 @@ Authors: Patrick Massot, Riccardo Brasca
-/
import Mathlib.Analysis.NormedSpace.Basic
import Mathlib.Analysis.Normed.Group.Hom
+import Mathlib.Data.Real.Sqrt
import Mathlib.RingTheory.Ideal.QuotientOperations
import Mathlib.Topology.MetricSpace.HausdorffDistance
Nonempty
arguments (#9377)
Finset.Nonempty.image_iff
to Finset.image_nonempty
, deprecate the old version;Set.nonempty_image_iff
to Set.image_nonempty
, deprecate the old version;Finset.Nonempty
arguments here and there;Nonempty s
instead of Nonempty (s.image f)
or Nonempty (s.map f)
.@@ -379,7 +379,7 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
(n : N) : ∃ m : M, f m = n ∧ ‖m‖ < ‖n‖ + ε := by
obtain ⟨m, rfl⟩ := hquot.surjective n
have nonemp : ((fun m' => ‖m + m'‖) '' f.ker).Nonempty := by
- rw [Set.nonempty_image_iff]
+ rw [Set.image_nonempty]
exact ⟨0, f.ker.zero_mem⟩
rcases Real.lt_sInf_add_pos nonemp hε
with ⟨_, ⟨⟨x, hx, rfl⟩, H : ‖m + x‖ < sInf ((fun m' : M => ‖m + m'‖) '' f.ker) + ε⟩⟩
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -97,7 +97,7 @@ noncomputable section
open QuotientAddGroup Metric Set Topology NNReal
-variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
+variable {M N : Type*} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
/-- The definition of the norm on the quotient by an additive subgroup. -/
noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S) where
@@ -348,19 +348,19 @@ structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
/-- Given `f : NormedAddGroupHom M N` such that `f s = 0` for all `s ∈ S`, where,
`S : AddSubgroup M` is closed, the induced morphism `NormedAddGroupHom (M ⧸ S) N`. -/
-noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+noncomputable def lift {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) : NormedAddGroupHom (M ⧸ S) N :=
{ QuotientAddGroup.lift S f.toAddMonoidHom hf with
bound' := ⟨‖f‖, norm_lift_apply_le f hf⟩ }
#align normed_add_group_hom.lift NormedAddGroupHom.lift
-theorem lift_mk {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+theorem lift_mk {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (m : M) :
lift S f hf (S.normedMk m) = f m :=
rfl
#align normed_add_group_hom.lift_mk NormedAddGroupHom.lift_mk
-theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+theorem lift_unique {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (g : NormedAddGroupHom (M ⧸ S) N)
(h : g.comp S.normedMk = f) : g = lift S f hf := by
ext x
@@ -398,19 +398,19 @@ theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m
#align normed_add_group_hom.is_quotient.norm_le NormedAddGroupHom.IsQuotient.norm_le
-- porting note: new lemma
-theorem norm_lift_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+theorem norm_lift_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) :
‖lift S f hf‖ ≤ ‖f‖ :=
opNorm_le_bound _ (norm_nonneg f) (norm_lift_apply_le f hf)
-- porting note: todo: deprecate?
-theorem lift_norm_le {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+theorem lift_norm_le {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) {c : ℝ≥0} (fb : ‖f‖ ≤ c) :
‖lift S f hf‖ ≤ c :=
(norm_lift_le S f hf).trans fb
#align normed_add_group_hom.lift_norm_le NormedAddGroupHom.lift_norm_le
-theorem lift_normNoninc {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
+theorem lift_normNoninc {N : Type*} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) (fb : f.NormNoninc) :
(lift S f hf).NormNoninc := fun x => by
have fb' : ‖f‖ ≤ (1 : ℝ≥0) := NormNoninc.normNoninc_iff_norm_le_one.mp fb
@@ -435,7 +435,7 @@ have quotients of rings by two-sided ideals, hence the commutativity hypotheses
section Submodule
-variable {R : Type _} [Ring R] [Module R M] (S : Submodule R M)
+variable {R : Type*} [Ring R] [Module R M] (S : Submodule R M)
instance Submodule.Quotient.seminormedAddCommGroup : SeminormedAddCommGroup (M ⧸ S) :=
AddSubgroup.seminormedAddCommGroupQuotient S.toAddSubgroup
@@ -461,7 +461,7 @@ theorem Submodule.Quotient.norm_mk_le (m : M) : ‖(Submodule.Quotient.mk m : M
quotient_norm_mk_le S.toAddSubgroup m
#align submodule.quotient.norm_mk_le Submodule.Quotient.norm_mk_le
-instance Submodule.Quotient.normedSpace (𝕜 : Type _) [NormedField 𝕜] [NormedSpace 𝕜 M] [SMul 𝕜 R]
+instance Submodule.Quotient.normedSpace (𝕜 : Type*) [NormedField 𝕜] [NormedSpace 𝕜 M] [SMul 𝕜 R]
[IsScalarTower 𝕜 R M] : NormedSpace 𝕜 (M ⧸ S) :=
{ Submodule.Quotient.module' S with
norm_smul_le := fun k x =>
@@ -483,7 +483,7 @@ end Submodule
section Ideal
-variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
+variable {R : Type*} [SeminormedCommRing R] (I : Ideal R)
nonrec theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
@@ -516,7 +516,7 @@ instance Ideal.Quotient.normedCommRing [IsClosed (I : Set R)] : NormedCommRing (
{ Ideal.Quotient.semiNormedCommRing I, Submodule.Quotient.normedAddCommGroup I with }
#align ideal.quotient.normed_comm_ring Ideal.Quotient.normedCommRing
-variable (𝕜 : Type _) [NormedField 𝕜]
+variable (𝕜 : Type*) [NormedField 𝕜]
instance Ideal.Quotient.normedAlgebra [NormedAlgebra 𝕜 R] : NormedAlgebra 𝕜 (R ⧸ I) :=
{ Submodule.Quotient.normedSpace I 𝕜, Ideal.Quotient.algebra 𝕜 with }
@@ -77,7 +77,7 @@ Mathematically there is something to prove. The main point is proved in the auxi
`quotient_nhd_basis` that has no use beyond this verification and states that zero in the quotient
admits as basis of neighborhoods in the quotient topology the sets `{x | ‖x‖ < ε}` for positive `ε`.
-Once this mathematical point it settled, we have two topologies that are propositionally equal. This
+Once this mathematical point is settled, we have two topologies that are propositionally equal. This
is not good enough for the type class system. As usual we ensure *definitional* equality
using forgetful inheritance, see Note [forgetful inheritance]. A (semi)-normed group structure
includes a uniform space structure which includes a topological space structure, together
@@ -2,17 +2,14 @@
Copyright (c) 2021 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Riccardo Brasca
-
-! This file was ported from Lean 3 source module analysis.normed.group.quotient
-! leanprover-community/mathlib commit 2196ab363eb097c008d4497125e0dde23fb36db2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.NormedSpace.Basic
import Mathlib.Analysis.Normed.Group.Hom
import Mathlib.RingTheory.Ideal.QuotientOperations
import Mathlib.Topology.MetricSpace.HausdorffDistance
+#align_import analysis.normed.group.quotient from "leanprover-community/mathlib"@"2196ab363eb097c008d4497125e0dde23fb36db2"
+
/-!
# Quotients of seminormed groups
@@ -349,7 +349,7 @@ structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
protected norm : ∀ x, ‖f x‖ = sInf ((fun m => ‖x + m‖) '' f.ker)
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
-/-- Given `f : NormedAddGroupHom M N` such that `f s = 0` for all `s ∈ S`, where,
+/-- Given `f : NormedAddGroupHom M N` such that `f s = 0` for all `s ∈ S`, where,
`S : AddSubgroup M` is closed, the induced morphism `NormedAddGroupHom (M ⧸ S) N`. -/
noncomputable def lift {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
(f : NormedAddGroupHom M N) (hf : ∀ s ∈ S, f s = 0) : NormedAddGroupHom (M ⧸ S) N :=
@@ -80,7 +80,7 @@ Mathematically there is something to prove. The main point is proved in the auxi
`quotient_nhd_basis` that has no use beyond this verification and states that zero in the quotient
admits as basis of neighborhoods in the quotient topology the sets `{x | ‖x‖ < ε}` for positive `ε`.
-Once this mathematical point it settled, we have two topologies that are propositionaly equal. This
+Once this mathematical point it settled, we have two topologies that are propositionally equal. This
is not good enough for the type class system. As usual we ensure *definitional* equality
using forgetful inheritance, see Note [forgetful inheritance]. A (semi)-normed group structure
includes a uniform space structure which includes a topological space structure, together
I ran codespell Mathlib
and got tired halfway through the suggestions.
@@ -44,10 +44,10 @@ All the following definitions are in the `AddSubgroup` namespace. Hence we can a
`AddSubgroup.normedMk S` as `S.normedMk`.
* `seminormedAddCommGroupQuotient` : The seminormed group structure on the quotient by
- an additive subgroup. This is an instance so there is no need to explictly use it.
+ an additive subgroup. This is an instance so there is no need to explicitly use it.
* `normedAddCommGroupQuotient` : The normed group structure on the quotient by
- a closed additive subgroup. This is an instance so there is no need to explictly use it.
+ a closed additive subgroup. This is an instance so there is no need to explicitly use it.
* `normedMk S` : the normed group hom from `M` to `M ⧸ S`.
@@ -25,7 +25,7 @@ topology and the projection is a normed group homomorphism which is norm non-inc
universal property is that every normed group hom defined on `M` which vanishes on `S` descends
to a normed group hom defined on `M ⧸ S`.
-This file also introduces a predicate `is_quotient` characterizing normed group homs that
+This file also introduces a predicate `IsQuotient` characterizing normed group homs that
are isomorphic to the canonical projection onto a normed group quotient.
In addition, this file also provides normed structures for quotients of modules by submodules, and
@@ -41,36 +41,36 @@ this instance in `Submodule.Quotient.completeSpace` so that it applies to these
We use `M` and `N` to denote seminormed groups and `S : AddSubgroup M`.
All the following definitions are in the `AddSubgroup` namespace. Hence we can access
-`AddSubgroup.normedMk S` as `S.normed_mk`.
+`AddSubgroup.normedMk S` as `S.normedMk`.
-* `seminormed_add_comm_group_quotient` : The seminormed group structure on the quotient by
+* `seminormedAddCommGroupQuotient` : The seminormed group structure on the quotient by
an additive subgroup. This is an instance so there is no need to explictly use it.
-* `normed_add_comm_group_quotient` : The normed group structure on the quotient by
+* `normedAddCommGroupQuotient` : The normed group structure on the quotient by
a closed additive subgroup. This is an instance so there is no need to explictly use it.
-* `normed_mk S` : the normed group hom from `M` to `M ⧸ S`.
+* `normedMk S` : the normed group hom from `M` to `M ⧸ S`.
* `lift S f hf`: implements the universal property of `M ⧸ S`. Here
`(f : NormedAddGroupHom M N)`, `(hf : ∀ s ∈ S, f s = 0)` and
`lift S f hf : NormedAddGroupHom (M ⧸ S) N`.
-* `is_quotient`: given `f : NormedAddGroupHom M N`, `is_quotient f` means `N` is isomorphic
+* `IsQuotient`: given `f : NormedAddGroupHom M N`, `IsQuotient f` means `N` is isomorphic
to a quotient of `M` by a subgroup, with projection `f`. Technically it asserts `f` is
surjective and the norm of `f x` is the infimum of the norms of `x + m` for `m` in `f.ker`.
## Main results
-* `norm_normed_mk` : the operator norm of the projection is `1` if the subspace is not dense.
+* `norm_normedMk` : the operator norm of the projection is `1` if the subspace is not dense.
-* `is_quotient.norm_lift`: Provided `f : normed_hom M N` satisfies `is_quotient f`, for every
+* `IsQuotient.norm_lift`: Provided `f : normed_hom M N` satisfies `IsQuotient f`, for every
`n : N` and positive `ε`, there exists `m` such that `f m = n ∧ ‖m‖ < ‖n‖ + ε`.
## Implementation details
For any `SeminormedAddCommGroup M` and any `S : AddSubgroup M` we define a norm on `M ⧸ S` by
-`‖x‖ = Inf (norm '' {m | mk' S m = x})`. This formula is really an implementation detail, it
+`‖x‖ = sInf (norm '' {m | mk' S m = x})`. This formula is really an implementation detail, it
shouldn't be needed outside of this file setting up the theory.
Since `M ⧸ S` is automatically a topological space (as any quotient of a topological space),
@@ -252,8 +252,7 @@ noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgro
toUniformSpace := TopologicalAddGroup.toUniformSpace (M ⧸ S)
uniformity_dist := by
rw [uniformity_eq_comap_nhds_zero', ((quotient_nhd_basis S).comap _).eq_biInf]
- simp only [dist, quotient_norm_sub_rev (Prod.fst _)]
- rfl
+ simp only [dist, quotient_norm_sub_rev (Prod.fst _), preimage_setOf_eq]
#align add_subgroup.seminormed_add_comm_group_quotient AddSubgroup.seminormedAddCommGroupQuotient
-- This is a sanity check left here on purpose to ensure that potential refactors won't destroy
@@ -285,18 +284,18 @@ noncomputable def normedMk (S : AddSubgroup M) : NormedAddGroupHom M (M ⧸ S) :
bound' := ⟨1, fun m => by simpa [one_mul] using quotient_norm_mk_le _ m⟩ }
#align add_subgroup.normed_mk AddSubgroup.normedMk
-/-- `S.normed_mk` agrees with `QuotientAddGroup.mk' S`. -/
+/-- `S.normedMk` agrees with `QuotientAddGroup.mk' S`. -/
@[simp]
theorem normedMk.apply (S : AddSubgroup M) (m : M) : normedMk S m = QuotientAddGroup.mk' S m :=
rfl
#align add_subgroup.normed_mk.apply AddSubgroup.normedMk.apply
-/-- `S.normed_mk` is surjective. -/
+/-- `S.normedMk` is surjective. -/
theorem surjective_normedMk (S : AddSubgroup M) : Function.Surjective (normedMk S) :=
surjective_quot_mk _
#align add_subgroup.surjective_normed_mk AddSubgroup.surjective_normedMk
-/-- The kernel of `S.normed_mk` is `S`. -/
+/-- The kernel of `S.normedMk` is `S`. -/
theorem ker_normedMk (S : AddSubgroup M) : S.normedMk.ker = S :=
QuotientAddGroup.ker_mk' _
#align add_subgroup.ker_normed_mk AddSubgroup.ker_normedMk
@@ -343,7 +342,7 @@ end AddSubgroup
namespace NormedAddGroupHom
-/-- `is_quotient f`, for `f : M ⟶ N` means that `N` is isomorphic to the quotient of `M`
+/-- `IsQuotient f`, for `f : M ⟶ N` means that `N` is isomorphic to the quotient of `M`
by the kernel of `f`. -/
structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
protected surjective : Function.Surjective f
@@ -374,7 +373,7 @@ theorem lift_unique {N : Type _} [SeminormedAddCommGroup N] (S : AddSubgroup M)
rfl
#align normed_add_group_hom.lift_unique NormedAddGroupHom.lift_unique
-/-- `S.normed_mk` satisfies `is_quotient`. -/
+/-- `S.normedMk` satisfies `IsQuotient`. -/
theorem isQuotientQuotient (S : AddSubgroup M) : IsQuotient S.normedMk :=
⟨S.surjective_normedMk, fun m => by simpa [S.ker_normedMk] using quotient_norm_mk_eq _ m⟩
#align normed_add_group_hom.is_quotient_quotient NormedAddGroupHom.isQuotientQuotient
Now that leanprover/lean4#2210 has been merged, this PR:
set_option synthInstance.etaExperiment true
commands (and some etaExperiment%
term elaborators)set_option maxHeartbeats
commandsCo-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -489,19 +489,15 @@ section Ideal
variable {R : Type _} [SeminormedCommRing R] (I : Ideal R)
-set_option synthInstance.etaExperiment true in -- Porting note: gets around lean4#2074
nonrec theorem Ideal.Quotient.norm_mk_lt {I : Ideal R} (x : R ⧸ I) {ε : ℝ} (hε : 0 < ε) :
∃ r : R, Ideal.Quotient.mk I r = x ∧ ‖r‖ < ‖x‖ + ε :=
norm_mk_lt x hε
#align ideal.quotient.norm_mk_lt Ideal.Quotient.norm_mk_lt
-set_option synthInstance.etaExperiment true in -- Porting note: gets around lean4#2074
theorem Ideal.Quotient.norm_mk_le (r : R) : ‖Ideal.Quotient.mk I r‖ ≤ ‖r‖ :=
quotient_norm_mk_le I.toAddSubgroup r
#align ideal.quotient.norm_mk_le Ideal.Quotient.norm_mk_le
-set_option synthInstance.etaExperiment true in -- Porting note: gets around lean4#2074
-set_option maxHeartbeats 400000 in
instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) where
dist_eq := dist_eq_norm
mul_comm := _root_.mul_comm
@@ -520,15 +516,12 @@ instance Ideal.Quotient.semiNormedCommRing : SeminormedCommRing (R ⧸ I) where
_ ≤ _ := (sub_lt_iff_lt_add'.mp h.1).le
#align ideal.quotient.semi_normed_comm_ring Ideal.Quotient.semiNormedCommRing
-set_option synthInstance.etaExperiment true in -- Porting note: gets around lean4#2074
instance Ideal.Quotient.normedCommRing [IsClosed (I : Set R)] : NormedCommRing (R ⧸ I) :=
{ Ideal.Quotient.semiNormedCommRing I, Submodule.Quotient.normedAddCommGroup I with }
#align ideal.quotient.normed_comm_ring Ideal.Quotient.normedCommRing
variable (𝕜 : Type _) [NormedField 𝕜]
-set_option synthInstance.etaExperiment true in -- Porting note: gets around lean4#2074
-set_option maxHeartbeats 700000 in
instance Ideal.Quotient.normedAlgebra [NormedAlgebra 𝕜 R] : NormedAlgebra 𝕜 (R ⧸ I) :=
{ Submodule.Quotient.normedSpace I 𝕜, Ideal.Quotient.algebra 𝕜 with }
#align ideal.quotient.normed_algebra Ideal.Quotient.normedAlgebra
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -104,17 +104,17 @@ variable {M N : Type _} [SeminormedAddCommGroup M] [SeminormedAddCommGroup N]
/-- The definition of the norm on the quotient by an additive subgroup. -/
noncomputable instance normOnQuotient (S : AddSubgroup M) : Norm (M ⧸ S) where
- norm x := infₛ (norm '' { m | mk' S m = x })
+ norm x := sInf (norm '' { m | mk' S m = x })
#align norm_on_quotient normOnQuotient
theorem AddSubgroup.quotient_norm_eq {S : AddSubgroup M} (x : M ⧸ S) :
- ‖x‖ = infₛ (norm '' { m : M | (m : M ⧸ S) = x }) :=
+ ‖x‖ = sInf (norm '' { m : M | (m : M ⧸ S) = x }) :=
rfl
#align add_subgroup.quotient_norm_eq AddSubgroup.quotient_norm_eq
theorem QuotientAddGroup.norm_eq_infDist {S : AddSubgroup M} (x : M ⧸ S) :
‖x‖ = infDist 0 { m : M | (m : M ⧸ S) = x } := by
- simp only [AddSubgroup.quotient_norm_eq, infDist_eq_infᵢ, infₛ_image', dist_zero_left]
+ simp only [AddSubgroup.quotient_norm_eq, infDist_eq_iInf, sInf_image', dist_zero_left]
/-- An alternative definition of the norm on the quotient group: the norm of `((x : M) : M ⧸ S)` is
equal to the distance from `x` to `S`. -/
@@ -137,7 +137,7 @@ theorem bddBelow_image_norm (s : Set M) : BddBelow (norm '' s) :=
theorem isGLB_quotient_norm {S : AddSubgroup M} (x : M ⧸ S) :
IsGLB (norm '' { m | mk' S m = x }) (‖x‖) :=
- isGLB_cinfₛ (image_norm_nonempty x) (bddBelow_image_norm _)
+ isGLB_csInf (image_norm_nonempty x) (bddBelow_image_norm _)
/-- The norm on the quotient satisfies `‖-x‖ = ‖x‖`. -/
theorem quotient_norm_neg {S : AddSubgroup M} (x : M ⧸ S) : ‖-x‖ = ‖x‖ := by
@@ -152,7 +152,7 @@ theorem quotient_norm_sub_rev {S : AddSubgroup M} (x y : M ⧸ S) : ‖x - y‖
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
theorem quotient_norm_mk_le (S : AddSubgroup M) (m : M) : ‖mk' S m‖ ≤ ‖m‖ :=
- cinfₛ_le (bddBelow_image_norm _) <| Set.mem_image_of_mem _ rfl
+ csInf_le (bddBelow_image_norm _) <| Set.mem_image_of_mem _ rfl
#align quotient_norm_mk_le quotient_norm_mk_le
/-- The norm of the projection is smaller or equal to the norm of the original element. -/
@@ -162,15 +162,15 @@ theorem quotient_norm_mk_le' (S : AddSubgroup M) (m : M) : ‖(m : M ⧸ S)‖
/-- The norm of the image under the natural morphism to the quotient. -/
theorem quotient_norm_mk_eq (S : AddSubgroup M) (m : M) :
- ‖mk' S m‖ = infₛ ((‖m + ·‖) '' S) := by
- rw [mk'_apply, norm_mk, infₛ_image', ← infDist_image isometry_neg, image_neg,
- neg_coe_set (H := S), infDist_eq_infᵢ]
+ ‖mk' S m‖ = sInf ((‖m + ·‖) '' S) := by
+ rw [mk'_apply, norm_mk, sInf_image', ← infDist_image isometry_neg, image_neg,
+ neg_coe_set (H := S), infDist_eq_iInf]
simp only [dist_eq_norm', sub_neg_eq_add, add_comm]
#align quotient_norm_mk_eq quotient_norm_mk_eq
/-- The quotient norm is nonnegative. -/
theorem quotient_norm_nonneg (S : AddSubgroup M) (x : M ⧸ S) : 0 ≤ ‖x‖ :=
- Real.infₛ_nonneg _ <| ball_image_iff.2 fun _ _ ↦ norm_nonneg _
+ Real.sInf_nonneg _ <| ball_image_iff.2 fun _ _ ↦ norm_nonneg _
#align quotient_norm_nonneg quotient_norm_nonneg
/-- The quotient norm is nonnegative. -/
@@ -211,9 +211,9 @@ theorem norm_mk_lt' (S : AddSubgroup M) (m : M) {ε : ℝ} (hε : 0 < ε) :
/-- The quotient norm satisfies the triangle inequality. -/
theorem quotient_norm_add_le (S : AddSubgroup M) (x y : M ⧸ S) : ‖x + y‖ ≤ ‖x‖ + ‖y‖ := by
rcases And.intro (mk_surjective x) (mk_surjective y) with ⟨⟨x, rfl⟩, ⟨y, rfl⟩⟩
- simp only [← mk'_apply, ← map_add, quotient_norm_mk_eq, infₛ_image']
- refine le_cinfᵢ_add_cinfᵢ fun a b ↦ ?_
- refine cinfᵢ_le_of_le ⟨0, forall_range_iff.2 fun _ ↦ norm_nonneg _⟩ (a + b) ?_
+ simp only [← mk'_apply, ← map_add, quotient_norm_mk_eq, sInf_image']
+ refine le_ciInf_add_ciInf fun a b ↦ ?_
+ refine ciInf_le_of_le ⟨0, forall_range_iff.2 fun _ ↦ norm_nonneg _⟩ (a + b) ?_
exact (congr_arg norm (add_add_add_comm _ _ _ _)).trans_le (norm_add_le _ _)
#align quotient_norm_add_le quotient_norm_add_le
@@ -251,7 +251,7 @@ noncomputable instance AddSubgroup.seminormedAddCommGroupQuotient (S : AddSubgro
edist_dist x y := by exact ENNReal.coe_nnreal_eq _
toUniformSpace := TopologicalAddGroup.toUniformSpace (M ⧸ S)
uniformity_dist := by
- rw [uniformity_eq_comap_nhds_zero', ((quotient_nhd_basis S).comap _).eq_binfᵢ]
+ rw [uniformity_eq_comap_nhds_zero', ((quotient_nhd_basis S).comap _).eq_biInf]
simp only [dist, quotient_norm_sub_rev (Prod.fst _)]
rfl
#align add_subgroup.seminormed_add_comm_group_quotient AddSubgroup.seminormedAddCommGroupQuotient
@@ -347,7 +347,7 @@ namespace NormedAddGroupHom
by the kernel of `f`. -/
structure IsQuotient (f : NormedAddGroupHom M N) : Prop where
protected surjective : Function.Surjective f
- protected norm : ∀ x, ‖f x‖ = infₛ ((fun m => ‖x + m‖) '' f.ker)
+ protected norm : ∀ x, ‖f x‖ = sInf ((fun m => ‖x + m‖) '' f.ker)
#align normed_add_group_hom.is_quotient NormedAddGroupHom.IsQuotient
/-- Given `f : NormedAddGroupHom M N` such that `f s = 0` for all `s ∈ S`, where,
@@ -385,8 +385,8 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
have nonemp : ((fun m' => ‖m + m'‖) '' f.ker).Nonempty := by
rw [Set.nonempty_image_iff]
exact ⟨0, f.ker.zero_mem⟩
- rcases Real.lt_infₛ_add_pos nonemp hε
- with ⟨_, ⟨⟨x, hx, rfl⟩, H : ‖m + x‖ < infₛ ((fun m' : M => ‖m + m'‖) '' f.ker) + ε⟩⟩
+ rcases Real.lt_sInf_add_pos nonemp hε
+ with ⟨_, ⟨⟨x, hx, rfl⟩, H : ‖m + x‖ < sInf ((fun m' : M => ‖m + m'‖) '' f.ker) + ε⟩⟩
exact ⟨m + x, by rw [map_add, (NormedAddGroupHom.mem_ker f x).mp hx, add_zero], by
rwa [hquot.norm]⟩
#align normed_add_group_hom.is_quotient.norm_lift NormedAddGroupHom.IsQuotient.norm_lift
@@ -394,7 +394,7 @@ theorem IsQuotient.norm_lift {f : NormedAddGroupHom M N} (hquot : IsQuotient f)
theorem IsQuotient.norm_le {f : NormedAddGroupHom M N} (hquot : IsQuotient f) (m : M) :
‖f m‖ ≤ ‖m‖ := by
rw [hquot.norm]
- apply cinfₛ_le
+ apply csInf_le
· use 0
rintro _ ⟨m', -, rfl⟩
apply norm_nonneg
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file