analysis.normed.field.basic
⟷
Mathlib.Analysis.Normed.Field.Basic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -318,13 +318,13 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
-/
-#print MulOpposite.nonUnitalSeminormedRing /-
-instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
+#print MulOpposite.instNonUnitalSeminormedRing /-
+instance MulOpposite.instNonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
{ MulOpposite.seminormedAddCommGroup with
norm_hMul :=
MulOpposite.rec' fun x =>
MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
-#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSeminormedRing
+#align mul_opposite.non_unital_semi_normed_ring MulOpposite.instNonUnitalSeminormedRing
-/
end NonUnitalSeminormedRing
@@ -487,10 +487,10 @@ instance Pi.seminormedRing {π : ι → Type _} [Fintype ι] [∀ i, SeminormedR
#align pi.semi_normed_ring Pi.seminormedRing
-/
-#print MulOpposite.seminormedRing /-
-instance MulOpposite.seminormedRing : SeminormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.seminormedAddCommGroup with }
-#align mul_opposite.semi_normed_ring MulOpposite.seminormedRing
+#print MulOpposite.instSeminormedRing /-
+instance MulOpposite.instSeminormedRing : SeminormedRing αᵐᵒᵖ :=
+ { MulOpposite.instNonUnitalSeminormedRing, MulOpposite.seminormedAddCommGroup with }
+#align mul_opposite.semi_normed_ring MulOpposite.instSeminormedRing
-/
end SeminormedRing
@@ -519,10 +519,10 @@ instance Pi.nonUnitalNormedRing {π : ι → Type _} [Fintype ι] [∀ i, NonUni
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
-/
-#print MulOpposite.nonUnitalNormedRing /-
-instance MulOpposite.nonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
+#print MulOpposite.instNonUnitalNormedRing /-
+instance MulOpposite.instNonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
{ MulOpposite.normedAddCommGroup with norm_hMul := norm_mul_le }
-#align mul_opposite.non_unital_normed_ring MulOpposite.nonUnitalNormedRing
+#align mul_opposite.non_unital_normed_ring MulOpposite.instNonUnitalNormedRing
-/
end NonUnitalNormedRing
@@ -561,10 +561,10 @@ instance Pi.normedRing {π : ι → Type _} [Fintype ι] [∀ i, NormedRing (π
#align pi.normed_ring Pi.normedRing
-/
-#print MulOpposite.normedRing /-
-instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
+#print MulOpposite.instNormedRing /-
+instance MulOpposite.instNormedRing : NormedRing αᵐᵒᵖ :=
{ MulOpposite.normedAddCommGroup with norm_hMul := norm_mul_le }
-#align mul_opposite.normed_ring MulOpposite.normedRing
+#align mul_opposite.normed_ring MulOpposite.instNormedRing
-/
end NormedRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -5,7 +5,7 @@ Authors: Patrick Massot, Johannes Hölzl
-/
import Algebra.Algebra.Subalgebra.Basic
import Analysis.Normed.Group.Basic
-import Topology.Instances.Ennreal
+import Topology.Instances.ENNReal
#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
@@ -434,7 +434,7 @@ See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
| 1, h => by simp only [pow_one]
| n + 2, h => by
- simpa only [pow_succ _ (n + 1)] using
+ simpa only [pow_succ' _ (n + 1)] using
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' n.succ_pos) _)
#align nnnorm_pow_le' nnnorm_pow_le'
-/
@@ -916,7 +916,7 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
rintro ε ε0
rcases exists_norm_lt α ε0 with ⟨b, hb0, hbε⟩
refine' ⟨x + b, mt (set.mem_singleton_iff.trans add_right_eq_self).1 <| norm_pos_iff.1 hb0, _⟩
- rwa [dist_comm, dist_eq_norm, add_sub_cancel']
+ rwa [dist_comm, dist_eq_norm, add_sub_cancel_left]
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -772,7 +772,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
inv_mul_cancel r0, mul_inv_cancel e0, one_mul, mul_one]
_ = ‖r - e‖ / ‖r‖ / ‖e‖ := by field_simp [mul_comm]
_ ≤ ‖r - e‖ / ‖r‖ / ε :=
- div_le_div_of_le_left (div_nonneg (norm_nonneg _) (norm_nonneg _)) ε0 he.le
+ div_le_div_of_nonneg_left (div_nonneg (norm_nonneg _) (norm_nonneg _)) ε0 he.le
refine' squeeze_zero' (eventually_of_forall fun _ => norm_nonneg _) this _
refine' (((continuous_const.sub continuous_id).norm.div_const _).div_const _).tendsto' _ _ _
simp
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -730,8 +730,8 @@ theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w
#print nndist_inv_inv₀ /-
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
- nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by rw [← NNReal.coe_eq];
- simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
+ nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by rw [← NNReal.coe_inj];
+ simp [-NNReal.coe_inj, dist_inv_inv₀ hz hw]
#align nndist_inv_inv₀ nndist_inv_inv₀
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -787,19 +787,17 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
#align normed_division_ring.to_topological_division_ring NormedDivisionRing.to_topologicalDivisionRing
-/
-#print norm_map_one_of_pow_eq_one /-
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
by
rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
exacts [norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
--/
-#print norm_one_of_pow_eq_one /-
-theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
+#print IsOfFinOrder.norm_eq_one /-
+theorem IsOfFinOrder.norm_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
norm_map_one_of_pow_eq_one (MonoidHom.id α) h
-#align norm_one_of_pow_eq_one norm_one_of_pow_eq_one
+#align norm_one_of_pow_eq_one IsOfFinOrder.norm_eq_one
-/
end NormedDivisionRing
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-/
-import Mathbin.Algebra.Algebra.Subalgebra.Basic
-import Mathbin.Analysis.Normed.Group.Basic
-import Mathbin.Topology.Instances.Ennreal
+import Algebra.Algebra.Subalgebra.Basic
+import Analysis.Normed.Group.Basic
+import Topology.Instances.Ennreal
#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -574,7 +574,7 @@ end NormedRing
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
⟨continuous_iff_continuousAt.2 fun x =>
- tendsto_iff_norm_tendsto_zero.2 <|
+ tendsto_iff_norm_sub_tendsto_zero.2 <|
by
have : ∀ e : α × α, ‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
by
@@ -759,7 +759,7 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α :=
by
- refine' ⟨fun r r0 => tendsto_iff_norm_tendsto_zero.2 _⟩
+ refine' ⟨fun r r0 => tendsto_iff_norm_sub_tendsto_zero.2 _⟩
have r0' : 0 < ‖r‖ := norm_pos_iff.2 r0
rcases exists_between r0' with ⟨ε, ε0, εr⟩
have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -32,7 +32,7 @@ endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖
class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
- norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
+ norm_hMul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align non_unital_semi_normed_ring NonUnitalSeminormedRing
-/
@@ -41,7 +41,7 @@ class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
`‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class SeminormedRing (α : Type _) extends Norm α, Ring α, PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
- norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
+ norm_hMul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align semi_normed_ring SeminormedRing
-/
@@ -59,7 +59,7 @@ instance (priority := 100) SeminormedRing.toNonUnitalSeminormedRing [β : Semino
endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NonUnitalNormedRing (α : Type _) extends Norm α, NonUnitalRing α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
- norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
+ norm_hMul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align non_unital_normed_ring NonUnitalNormedRing
-/
@@ -76,7 +76,7 @@ instance (priority := 100) NonUnitalNormedRing.toNonUnitalSeminormedRing
/-- A normed ring is a ring endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NormedRing (α : Type _) extends Norm α, Ring α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
- norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
+ norm_hMul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align normed_ring NormedRing
-/
@@ -94,7 +94,7 @@ class NormedDivisionRing (α : Type _) extends Norm α, DivisionRing α, MetricS
/-- A normed division ring is a normed ring. -/
instance (priority := 100) NormedDivisionRing.toNormedRing [β : NormedDivisionRing α] :
NormedRing α :=
- { β with norm_mul := fun a b => (NormedDivisionRing.norm_mul' a b).le }
+ { β with norm_hMul := fun a b => (NormedDivisionRing.norm_mul' a b).le }
#align normed_division_ring.to_normed_ring NormedDivisionRing.toNormedRing
-/
@@ -141,7 +141,7 @@ instance (priority := 100) NormedCommRing.toSeminormedCommRing [β : NormedCommR
-/
instance : NormedCommRing PUnit :=
- { PUnit.normedAddCommGroup, PUnit.commRing with norm_mul := fun _ _ => by simp }
+ { PUnit.normedAddCommGroup, PUnit.commRing with norm_hMul := fun _ _ => by simp }
#print NormOneClass /-
/-- A mixin class with the axiom `‖1‖ = 1`. Many `normed_ring`s and all `normed_field`s satisfy this
@@ -223,7 +223,7 @@ variable [NonUnitalSeminormedRing α]
#print norm_mul_le /-
theorem norm_mul_le (a b : α) : ‖a * b‖ ≤ ‖a‖ * ‖b‖ :=
- NonUnitalSeminormedRing.norm_mul _ _
+ NonUnitalSeminormedRing.norm_hMul _ _
#align norm_mul_le norm_mul_le
-/
@@ -279,7 +279,7 @@ theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖
-/
instance : NonUnitalSeminormedRing (ULift α) :=
- { ULift.seminormedAddCommGroup with norm_mul := fun x y => (norm_mul_le x.down y.down : _) }
+ { ULift.seminormedAddCommGroup with norm_hMul := fun x y => (norm_mul_le x.down y.down : _) }
#print Prod.nonUnitalSeminormedRing /-
/-- Non-unital seminormed ring structure on the product of two non-unital seminormed rings,
@@ -287,7 +287,7 @@ instance : NonUnitalSeminormedRing (ULift α) :=
instance Prod.nonUnitalSeminormedRing [NonUnitalSeminormedRing β] :
NonUnitalSeminormedRing (α × β) :=
{ Prod.seminormedAddCommGroup with
- norm_mul := fun x y =>
+ norm_hMul := fun x y =>
calc
‖x * y‖ = ‖(x.1 * y.1, x.2 * y.2)‖ := rfl
_ = max ‖x.1 * y.1‖ ‖x.2 * y.2‖ := rfl
@@ -307,7 +307,7 @@ rings, using the sup norm. -/
instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
[∀ i, NonUnitalSeminormedRing (π i)] : NonUnitalSeminormedRing (∀ i, π i) :=
{ Pi.seminormedAddCommGroup with
- norm_mul := fun x y =>
+ norm_hMul := fun x y =>
NNReal.coe_mono <|
calc
(Finset.univ.sup fun i => ‖x i * y i‖₊) ≤
@@ -321,7 +321,7 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
#print MulOpposite.nonUnitalSeminormedRing /-
instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
{ MulOpposite.seminormedAddCommGroup with
- norm_mul :=
+ norm_hMul :=
MulOpposite.rec' fun x =>
MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSeminormedRing
@@ -339,7 +339,7 @@ variable [SeminormedRing α]
See note [implicit instance arguments]. -/
instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [SeminormedRing E]
{_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : SeminormedRing s :=
- { s.toSubmodule.SeminormedAddCommGroup with norm_mul := fun a b => norm_mul_le a.1 b.1 }
+ { s.toSubmodule.SeminormedAddCommGroup with norm_hMul := fun a b => norm_mul_le a.1 b.1 }
#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
-/
@@ -506,7 +506,7 @@ instance : NonUnitalNormedRing (ULift α) :=
/-- Non-unital normed ring structure on the product of two non-unital normed rings,
using the sup norm. -/
instance Prod.nonUnitalNormedRing [NonUnitalNormedRing β] : NonUnitalNormedRing (α × β) :=
- { Prod.seminormedAddCommGroup with norm_mul := norm_mul_le }
+ { Prod.seminormedAddCommGroup with norm_hMul := norm_mul_le }
#align prod.non_unital_normed_ring Prod.nonUnitalNormedRing
-/
@@ -515,13 +515,13 @@ instance Prod.nonUnitalNormedRing [NonUnitalNormedRing β] : NonUnitalNormedRing
norm. -/
instance Pi.nonUnitalNormedRing {π : ι → Type _} [Fintype ι] [∀ i, NonUnitalNormedRing (π i)] :
NonUnitalNormedRing (∀ i, π i) :=
- { Pi.normedAddCommGroup with norm_mul := norm_mul_le }
+ { Pi.normedAddCommGroup with norm_hMul := norm_mul_le }
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
-/
#print MulOpposite.nonUnitalNormedRing /-
instance MulOpposite.nonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
- { MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
+ { MulOpposite.normedAddCommGroup with norm_hMul := norm_mul_le }
#align mul_opposite.non_unital_normed_ring MulOpposite.nonUnitalNormedRing
-/
@@ -549,7 +549,7 @@ instance : NormedRing (ULift α) :=
#print Prod.normedRing /-
/-- Normed ring structure on the product of two normed rings, using the sup norm. -/
instance Prod.normedRing [NormedRing β] : NormedRing (α × β) :=
- { Prod.normedAddCommGroup with norm_mul := norm_mul_le }
+ { Prod.normedAddCommGroup with norm_hMul := norm_mul_le }
#align prod.normed_ring Prod.normedRing
-/
@@ -557,13 +557,13 @@ instance Prod.normedRing [NormedRing β] : NormedRing (α × β) :=
/-- Normed ring structure on the product of finitely many normed rings, using the sup norm. -/
instance Pi.normedRing {π : ι → Type _} [Fintype ι] [∀ i, NormedRing (π i)] :
NormedRing (∀ i, π i) :=
- { Pi.normedAddCommGroup with norm_mul := norm_mul_le }
+ { Pi.normedAddCommGroup with norm_hMul := norm_mul_le }
#align pi.normed_ring Pi.normedRing
-/
#print MulOpposite.normedRing /-
instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
- { MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
+ { MulOpposite.normedAddCommGroup with norm_hMul := norm_mul_le }
#align mul_opposite.normed_ring MulOpposite.normedRing
-/
@@ -855,7 +855,7 @@ instance (priority := 100) NormedField.toNormedDivisionRing : NormedDivisionRing
#print NormedField.toNormedCommRing /-
-- see Note [lower instance priority]
instance (priority := 100) NormedField.toNormedCommRing : NormedCommRing α :=
- { ‹NormedField α› with norm_mul := fun a b => (norm_mul a b).le }
+ { ‹NormedField α› with norm_hMul := fun a b => (norm_mul a b).le }
#align normed_field.to_normed_comm_ring NormedField.toNormedCommRing
-/
@@ -980,7 +980,7 @@ end Densely
end NormedField
instance : NormedCommRing ℝ :=
- { Real.normedAddCommGroup, Real.commRing with norm_mul := fun x y => (abs_mul x y).le }
+ { Real.normedAddCommGroup, Real.commRing with norm_hMul := fun x y => (abs_mul x y).le }
noncomputable instance : NormedField ℝ :=
{ Real.normedAddCommGroup with norm_mul' := abs_mul }
@@ -1062,7 +1062,7 @@ theorem NormedAddCommGroup.tendsto_atTop' [Nonempty α] [SemilatticeSup α] [NoM
instance : NormedCommRing ℤ :=
{
Int.normedAddCommGroup with
- norm_mul := fun m n => le_of_eq <| by simp only [norm, Int.cast_mul, abs_mul]
+ norm_hMul := fun m n => le_of_eq <| by simp only [norm, Int.cast_mul, abs_mul]
mul_comm := mul_comm }
instance : NormOneClass ℤ :=
@@ -1117,7 +1117,7 @@ See note [reducible non-instances] -/
def NonUnitalSeminormedRing.induced [NonUnitalRing R] [NonUnitalSeminormedRing S]
[NonUnitalRingHomClass F R S] (f : F) : NonUnitalSeminormedRing R :=
{ SeminormedAddCommGroup.induced R S f with
- norm_mul := fun x y => by unfold norm; exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
+ norm_hMul := fun x y => by unfold norm; exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
#align non_unital_semi_normed_ring.induced NonUnitalSeminormedRing.induced
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-
-! This file was ported from Lean 3 source module analysis.normed.field.basic
-! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Algebra.Subalgebra.Basic
import Mathbin.Analysis.Normed.Group.Basic
import Mathbin.Topology.Instances.Ennreal
+#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
+
/-!
# Normed fields
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -198,10 +198,12 @@ instance (priority := 100) NonUnitalSeminormedRing.toSeminormedAddCommGroup
instance [SeminormedAddCommGroup α] [One α] [NormOneClass α] : NormOneClass (ULift α) :=
⟨by simp [ULift.norm_def]⟩
+#print Prod.normOneClass /-
instance Prod.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α]
[SeminormedAddCommGroup β] [One β] [NormOneClass β] : NormOneClass (α × β) :=
⟨by simp [Prod.norm_def]⟩
#align prod.norm_one_class Prod.normOneClass
+-/
#print Pi.normOneClass /-
instance Pi.normOneClass {ι : Type _} {α : ι → Type _} [Nonempty ι] [Fintype ι]
@@ -222,46 +224,62 @@ section NonUnitalSeminormedRing
variable [NonUnitalSeminormedRing α]
+#print norm_mul_le /-
theorem norm_mul_le (a b : α) : ‖a * b‖ ≤ ‖a‖ * ‖b‖ :=
NonUnitalSeminormedRing.norm_mul _ _
#align norm_mul_le norm_mul_le
+-/
+#print nnnorm_mul_le /-
theorem nnnorm_mul_le (a b : α) : ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊ := by
simpa only [← norm_toNNReal, ← Real.toNNReal_mul (norm_nonneg _)] using
Real.toNNReal_mono (norm_mul_le _ _)
#align nnnorm_mul_le nnnorm_mul_le
+-/
+#print one_le_norm_one /-
theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖ :=
(le_mul_iff_one_le_left <| norm_pos_iff.mpr (one_ne_zero : (1 : β) ≠ 0)).mp
(by simpa only [mul_one] using norm_mul_le (1 : β) 1)
#align one_le_norm_one one_le_norm_one
+-/
+#print one_le_nnnorm_one /-
theorem one_le_nnnorm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖₊ :=
one_le_norm_one β
#align one_le_nnnorm_one one_le_nnnorm_one
+-/
+#print Filter.Tendsto.zero_mul_isBoundedUnder_le /-
theorem Filter.Tendsto.zero_mul_isBoundedUnder_le {f g : ι → α} {l : Filter ι}
(hf : Tendsto f l (𝓝 0)) (hg : IsBoundedUnder (· ≤ ·) l (norm ∘ g)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hf.op_zero_isBoundedUnder_le hg (· * ·) norm_mul_le
#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_le
+-/
+#print Filter.isBoundedUnder_le_mul_tendsto_zero /-
theorem Filter.isBoundedUnder_le_mul_tendsto_zero {f g : ι → α} {l : Filter ι}
(hf : IsBoundedUnder (· ≤ ·) l (norm ∘ f)) (hg : Tendsto g l (𝓝 0)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hg.op_zero_isBoundedUnder_le hf (flip (· * ·)) fun x y =>
(norm_mul_le y x).trans_eq (mul_comm _ _)
#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zero
+-/
+#print mulLeft_bound /-
/-- In a seminormed ring, the left-multiplication `add_monoid_hom` is bounded. -/
theorem mulLeft_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulLeft x y‖ ≤ ‖x‖ * ‖y‖ :=
norm_mul_le x
#align mul_left_bound mulLeft_bound
+-/
+#print mulRight_bound /-
/-- In a seminormed ring, the right-multiplication `add_monoid_hom` is bounded. -/
theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y => by
rw [mul_comm]; convert norm_mul_le y x
#align mul_right_bound mulRight_bound
+-/
instance : NonUnitalSeminormedRing (ULift α) :=
{ ULift.seminormedAddCommGroup with norm_mul := fun x y => (norm_mul_le x.down y.down : _) }
@@ -318,6 +336,7 @@ section SeminormedRing
variable [SeminormedRing α]
+#print Subalgebra.seminormedRing /-
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
@@ -325,7 +344,9 @@ instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type
{_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : SeminormedRing s :=
{ s.toSubmodule.SeminormedAddCommGroup with norm_mul := fun a b => norm_mul_le a.1 b.1 }
#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
+-/
+#print Subalgebra.normedRing /-
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
@@ -333,16 +354,20 @@ instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _}
{_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : NormedRing s :=
{ s.SeminormedRing with }
#align subalgebra.normed_ring Subalgebra.normedRing
+-/
+#print Nat.norm_cast_le /-
theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
| 0 => by simp
| n + 1 => by
rw [n.cast_succ, n.cast_succ, add_mul, one_mul]
exact norm_add_le_of_le (Nat.norm_cast_le n) le_rfl
#align nat.norm_cast_le Nat.norm_cast_le
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print List.norm_prod_le' /-
theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l.map norm).Prod
| [], h => (h rfl).elim
| [a], _ => by simp
@@ -351,21 +376,29 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
refine' le_trans (norm_mul_le _ _) (mul_le_mul_of_nonneg_left _ (norm_nonneg _))
exact List.norm_prod_le' (List.cons_ne_nil b l)
#align list.norm_prod_le' List.norm_prod_le'
+-/
+#print List.nnnorm_prod_le' /-
theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
(List.norm_prod_le' hl).trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le' List.nnnorm_prod_le'
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print List.norm_prod_le /-
theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤ (l.map norm).Prod
| [] => by simp
| a::l => List.norm_prod_le' (List.cons_ne_nil a l)
#align list.norm_prod_le List.norm_prod_le
+-/
+#print List.nnnorm_prod_le /-
theorem List.nnnorm_prod_le [NormOneClass α] (l : List α) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
l.norm_prod_le.trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le List.nnnorm_prod_le
+-/
+#print Finset.norm_prod_le' /-
theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
@@ -373,24 +406,32 @@ theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (
have : l.map f ≠ [] := by simpa using hs
simpa using List.norm_prod_le' this
#align finset.norm_prod_le' Finset.norm_prod_le'
+-/
+#print Finset.nnnorm_prod_le' /-
theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le' hs f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'
+-/
+#print Finset.norm_prod_le /-
theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
rcases s with ⟨⟨l⟩, hl⟩
simpa using (l.map f).norm_prod_le
#align finset.norm_prod_le Finset.norm_prod_le
+-/
+#print Finset.nnnorm_prod_le /-
theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le Finset.nnnorm_prod_le
+-/
+#print nnnorm_pow_le' /-
/-- If `α` is a seminormed ring, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n` for `n > 0`.
See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
@@ -399,26 +440,35 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
simpa only [pow_succ _ (n + 1)] using
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' n.succ_pos) _)
#align nnnorm_pow_le' nnnorm_pow_le'
+-/
+#print nnnorm_pow_le /-
/-- If `α` is a seminormed ring with `‖1‖₊ = 1`, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n`.
See also `nnnorm_pow_le'`.-/
theorem nnnorm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n :=
Nat.recOn n (by simp only [pow_zero, nnnorm_one]) fun k hk => nnnorm_pow_le' a k.succ_pos
#align nnnorm_pow_le nnnorm_pow_le
+-/
+#print norm_pow_le' /-
/-- If `α` is a seminormed ring, then `‖a ^ n‖ ≤ ‖a‖ ^ n` for `n > 0`. See also `norm_pow_le`. -/
theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^ n := by
simpa only [NNReal.coe_pow, coe_nnnorm] using NNReal.coe_mono (nnnorm_pow_le' a h)
#align norm_pow_le' norm_pow_le'
+-/
+#print norm_pow_le /-
/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`. See also `norm_pow_le'`.-/
theorem norm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖ ≤ ‖a‖ ^ n :=
Nat.recOn n (by simp only [pow_zero, norm_one]) fun n hn => norm_pow_le' a n.succ_pos
#align norm_pow_le norm_pow_le
+-/
+#print eventually_norm_pow_le /-
theorem eventually_norm_pow_le (a : α) : ∀ᶠ n : ℕ in atTop, ‖a ^ n‖ ≤ ‖a‖ ^ n :=
eventually_atTop.mpr ⟨1, fun b h => norm_pow_le' a (Nat.succ_le_iff.mp h)⟩
#align eventually_norm_pow_le eventually_norm_pow_le
+-/
instance : SeminormedRing (ULift α) :=
{ ULift.nonUnitalSemiNormedRing, ULift.seminormedAddCommGroup with }
@@ -484,13 +534,17 @@ section NormedRing
variable [NormedRing α]
+#print Units.norm_pos /-
theorem Units.norm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖ :=
norm_pos_iff.mpr (Units.ne_zero x)
#align units.norm_pos Units.norm_pos
+-/
+#print Units.nnnorm_pos /-
theorem Units.nnnorm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖₊ :=
x.norm_pos
#align units.nnnorm_pos Units.nnnorm_pos
+-/
instance : NormedRing (ULift α) :=
{ ULift.semiNormedRing, ULift.normedAddCommGroup with }
@@ -518,6 +572,7 @@ instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
end NormedRing
+#print semi_normed_ring_top_monoid /-
-- see Note [lower instance priority]
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
@@ -540,6 +595,7 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
show tendsto _ _ _; exact tendsto_const_nhds
simp⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
+-/
#print semi_normed_top_ring /-
-- see Note [lower instance priority]
@@ -553,14 +609,18 @@ section NormedDivisionRing
variable [NormedDivisionRing α]
+#print norm_mul /-
@[simp]
theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
NormedDivisionRing.norm_mul' a b
#align norm_mul norm_mul
+-/
+#print NormedDivisionRing.to_normOneClass /-
instance (priority := 900) NormedDivisionRing.to_normOneClass : NormOneClass α :=
⟨mul_left_cancel₀ (mt norm_eq_zero.1 (one_ne_zero' α)) <| by rw [← norm_mul, mul_one, mul_one]⟩
#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClass
+-/
#print isAbsoluteValue_norm /-
instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
@@ -572,10 +632,12 @@ instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
#align is_absolute_value_norm isAbsoluteValue_norm
-/
+#print nnnorm_mul /-
@[simp]
theorem nnnorm_mul (a b : α) : ‖a * b‖₊ = ‖a‖₊ * ‖b‖₊ :=
NNReal.eq <| norm_mul a b
#align nnnorm_mul nnnorm_mul
+-/
#print normHom /-
/-- `norm` as a `monoid_with_zero_hom`. -/
@@ -593,43 +655,59 @@ def nnnormHom : α →*₀ ℝ≥0 :=
#align nnnorm_hom nnnormHom
-/
+#print norm_pow /-
@[simp]
theorem norm_pow (a : α) : ∀ n : ℕ, ‖a ^ n‖ = ‖a‖ ^ n :=
(normHom.toMonoidHom : α →* ℝ).map_pow a
#align norm_pow norm_pow
+-/
+#print nnnorm_pow /-
@[simp]
theorem nnnorm_pow (a : α) (n : ℕ) : ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_pow a n
#align nnnorm_pow nnnorm_pow
+-/
+#print List.norm_prod /-
protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Prod :=
(normHom.toMonoidHom : α →* ℝ).map_list_prod _
#align list.norm_prod List.norm_prod
+-/
+#print List.nnnorm_prod /-
protected theorem List.nnnorm_prod (l : List α) : ‖l.Prod‖₊ = (l.map nnnorm).Prod :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_list_prod _
#align list.nnnorm_prod List.nnnorm_prod
+-/
+#print norm_div /-
@[simp]
theorem norm_div (a b : α) : ‖a / b‖ = ‖a‖ / ‖b‖ :=
map_div₀ (normHom : α →*₀ ℝ) a b
#align norm_div norm_div
+-/
+#print nnnorm_div /-
@[simp]
theorem nnnorm_div (a b : α) : ‖a / b‖₊ = ‖a‖₊ / ‖b‖₊ :=
map_div₀ (nnnormHom : α →*₀ ℝ≥0) a b
#align nnnorm_div nnnorm_div
+-/
+#print norm_inv /-
@[simp]
theorem norm_inv (a : α) : ‖a⁻¹‖ = ‖a‖⁻¹ :=
map_inv₀ (normHom : α →*₀ ℝ) a
#align norm_inv norm_inv
+-/
+#print nnnorm_inv /-
@[simp]
theorem nnnorm_inv (a : α) : ‖a⁻¹‖₊ = ‖a‖₊⁻¹ :=
NNReal.eq <| by simp
#align nnnorm_inv nnnorm_inv
+-/
#print norm_zpow /-
@[simp]
@@ -638,22 +716,29 @@ theorem norm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖ = ‖a‖ ^ n :=
#align norm_zpow norm_zpow
-/
+#print nnnorm_zpow /-
@[simp]
theorem nnnorm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
map_zpow₀ (nnnormHom : α →*₀ ℝ≥0)
#align nnnorm_zpow nnnorm_zpow
+-/
+#print dist_inv_inv₀ /-
theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) :=
by
rw [dist_eq_norm, inv_sub_inv' hz hw, norm_mul, norm_mul, norm_inv, norm_inv, mul_comm ‖z‖⁻¹,
mul_assoc, dist_eq_norm', div_eq_mul_inv, mul_inv]
#align dist_inv_inv₀ dist_inv_inv₀
+-/
+#print nndist_inv_inv₀ /-
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by rw [← NNReal.coe_eq];
simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
#align nndist_inv_inv₀ nndist_inv_inv₀
+-/
+#print Filter.tendsto_mul_left_cobounded /-
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
@@ -661,7 +746,9 @@ theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
simpa only [tendsto_comap_iff, (· ∘ ·), norm_mul] using
tendsto_const_nhds.mul_at_top (norm_pos_iff.2 ha) tendsto_comap
#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_cobounded
+-/
+#print Filter.tendsto_mul_right_cobounded /-
/-- Multiplication on the right by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
@@ -669,7 +756,9 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
simpa only [tendsto_comap_iff, (· ∘ ·), norm_mul] using
tendsto_comap.at_top_mul (norm_pos_iff.2 ha) tendsto_const_nhds
#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_cobounded
+-/
+#print NormedDivisionRing.to_hasContinuousInv₀ /-
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α :=
by
@@ -691,6 +780,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
refine' (((continuous_const.sub continuous_id).norm.div_const _).div_const _).tendsto' _ _ _
simp
#align normed_division_ring.to_has_continuous_inv₀ NormedDivisionRing.to_hasContinuousInv₀
+-/
#print NormedDivisionRing.to_topologicalDivisionRing /-
-- see Note [lower instance priority]
@@ -700,16 +790,20 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
#align normed_division_ring.to_topological_division_ring NormedDivisionRing.to_topologicalDivisionRing
-/
+#print norm_map_one_of_pow_eq_one /-
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
by
rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
exacts [norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
+-/
+#print norm_one_of_pow_eq_one /-
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
norm_map_one_of_pow_eq_one (MonoidHom.id α) h
#align norm_one_of_pow_eq_one norm_one_of_pow_eq_one
+-/
end NormedDivisionRing
@@ -775,10 +869,12 @@ theorem norm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖ = ∏
#align norm_prod norm_prod
-/
+#print nnnorm_prod /-
@[simp]
theorem nnnorm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖₊ = ∏ b in s, ‖f b‖₊ :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_prod f s
#align nnnorm_prod nnnorm_prod
+-/
end NormedField
@@ -788,27 +884,36 @@ section Nontrivially
variable (α) [NontriviallyNormedField α]
+#print NormedField.exists_one_lt_norm /-
theorem exists_one_lt_norm : ∃ x : α, 1 < ‖x‖ :=
‹NontriviallyNormedField α›.non_trivial
#align normed_field.exists_one_lt_norm NormedField.exists_one_lt_norm
+-/
+#print NormedField.exists_lt_norm /-
theorem exists_lt_norm (r : ℝ) : ∃ x : α, r < ‖x‖ :=
let ⟨w, hw⟩ := exists_one_lt_norm α
let ⟨n, hn⟩ := pow_unbounded_of_one_lt r hw
⟨w ^ n, by rwa [norm_pow]⟩
#align normed_field.exists_lt_norm NormedField.exists_lt_norm
+-/
+#print NormedField.exists_norm_lt /-
theorem exists_norm_lt {r : ℝ} (hr : 0 < r) : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < r :=
let ⟨w, hw⟩ := exists_lt_norm α r⁻¹
⟨w⁻¹, by rwa [← Set.mem_Ioo, norm_inv, ← Set.mem_inv, Set.inv_Ioo_0_left hr]⟩
#align normed_field.exists_norm_lt NormedField.exists_norm_lt
+-/
+#print NormedField.exists_norm_lt_one /-
theorem exists_norm_lt_one : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < 1 :=
exists_norm_lt α one_pos
#align normed_field.exists_norm_lt_one NormedField.exists_norm_lt_one
+-/
variable {α}
+#print NormedField.punctured_nhds_neBot /-
@[instance]
theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
by
@@ -818,11 +923,14 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
refine' ⟨x + b, mt (set.mem_singleton_iff.trans add_right_eq_self).1 <| norm_pos_iff.1 hb0, _⟩
rwa [dist_comm, dist_eq_norm, add_sub_cancel']
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
+-/
+#print NormedField.nhdsWithin_isUnit_neBot /-
@[instance]
theorem nhdsWithin_isUnit_neBot : NeBot (𝓝[{x : α | IsUnit x}] 0) := by
simpa only [isUnit_iff_ne_zero] using punctured_nhds_ne_bot (0 : α)
#align normed_field.nhds_within_is_unit_ne_bot NormedField.nhdsWithin_isUnit_neBot
+-/
end Nontrivially
@@ -830,9 +938,11 @@ section Densely
variable (α) [DenselyNormedField α]
+#print NormedField.exists_lt_norm_lt /-
theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖ ∧ ‖x‖ < r₂ :=
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
+-/
#print NormedField.exists_lt_nnnorm_lt /-
theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
@@ -840,6 +950,7 @@ theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
-/
+#print NormedField.denselyOrdered_range_norm /-
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -847,6 +958,7 @@ instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α →
let ⟨z, h⟩ := exists_lt_norm_lt α (norm_nonneg _) hxy
⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
+-/
#print NormedField.denselyOrdered_range_nnnorm /-
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0))
@@ -858,11 +970,13 @@ instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
-/
+#print NormedField.denseRange_nnnorm /-
theorem denseRange_nnnorm : DenseRange (nnnorm : α → ℝ≥0) :=
dense_of_exists_between fun _ _ hr =>
let ⟨x, h⟩ := exists_lt_nnnorm_lt α hr
⟨‖x‖₊, ⟨x, rfl⟩, h⟩
#align normed_field.dense_range_nnnorm NormedField.denseRange_nnnorm
+-/
end Densely
@@ -881,13 +995,17 @@ noncomputable instance : DenselyNormedField ℝ
namespace Real
+#print Real.toNNReal_mul_nnnorm /-
theorem toNNReal_mul_nnnorm {x : ℝ} (y : ℝ) (hx : 0 ≤ x) : x.toNNReal * ‖y‖₊ = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hx]
#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnorm
+-/
+#print Real.nnnorm_mul_toNNReal /-
theorem nnnorm_mul_toNNReal (x : ℝ) {y : ℝ} (hy : 0 ≤ y) : ‖x‖₊ * y.toNNReal = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hy]
#align real.nnnorm_mul_to_nnreal Real.nnnorm_mul_toNNReal
+-/
end Real
@@ -895,21 +1013,27 @@ namespace NNReal
open scoped NNReal
+#print NNReal.norm_eq /-
@[simp]
theorem norm_eq (x : ℝ≥0) : ‖(x : ℝ)‖ = x := by rw [Real.norm_eq_abs, x.abs_eq]
#align nnreal.norm_eq NNReal.norm_eq
+-/
+#print NNReal.nnnorm_eq /-
@[simp]
theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
NNReal.eq <| Real.norm_of_nonneg x.2
#align nnreal.nnnorm_eq NNReal.nnnorm_eq
+-/
end NNReal
+#print norm_norm /-
@[simp]
theorem norm_norm [SeminormedAddCommGroup α] (x : α) : ‖‖x‖‖ = ‖x‖ :=
Real.norm_of_nonneg (norm_nonneg _)
#align norm_norm norm_norm
+-/
#print nnnorm_norm /-
@[simp]
@@ -918,13 +1042,16 @@ theorem nnnorm_norm [SeminormedAddCommGroup α] (a : α) : ‖‖a‖‖₊ =
#align nnnorm_norm nnnorm_norm
-/
+#print NormedAddCommGroup.tendsto_atTop /-
/-- A restatement of `metric_space.tendsto_at_top` in terms of the norm. -/
theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β : Type _}
[SeminormedAddCommGroup β] {f : α → β} {b : β} :
Tendsto f atTop (𝓝 b) ↔ ∀ ε, 0 < ε → ∃ N, ∀ n, N ≤ n → ‖f n - b‖ < ε :=
(atTop_basis.tendsto_iffₓ Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTop
+-/
+#print NormedAddCommGroup.tendsto_atTop' /-
/-- A variant of `normed_add_comm_group.tendsto_at_top` that
uses `∃ N, ∀ n > N, ...` rather than `∃ N, ∀ n ≥ N, ...`
-/
@@ -933,6 +1060,7 @@ theorem NormedAddCommGroup.tendsto_atTop' [Nonempty α] [SemilatticeSup α] [NoM
Tendsto f atTop (𝓝 b) ↔ ∀ ε, 0 < ε → ∃ N, ∀ n, N < n → ‖f n - b‖ < ε :=
(atTop_basis_Ioi.tendsto_iffₓ Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'
+-/
instance : NormedCommRing ℤ :=
{
@@ -1082,6 +1210,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
#align normed_field.induced NormedField.induced
-/
+#print NormOneClass.induced /-
/-- A ring homomorphism from a `ring R` to a `semi_normed_ring S` which induces the norm structure
`semi_normed_ring.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
@@ -1089,6 +1218,7 @@ theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRin
@NormOneClass R (SeminormedRing.induced R S f).toHasNorm _ :=
{ norm_one := (congr_arg norm (map_one f)).trans norm_one }
#align norm_one_class.induced NormOneClass.induced
+-/
end Induced
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -282,8 +282,7 @@ instance Prod.nonUnitalSeminormedRing [NonUnitalSeminormedRing β] :
_ ≤ max ‖x.1‖ ‖x.2‖ * max ‖y.2‖ ‖y.1‖ := by
apply max_mul_mul_le_max_mul_max <;> simp [norm_nonneg]
_ = max ‖x.1‖ ‖x.2‖ * max ‖y.1‖ ‖y.2‖ := by simp [max_comm]
- _ = ‖x‖ * ‖y‖ := rfl
- }
+ _ = ‖x‖ * ‖y‖ := rfl }
#align prod.non_unital_semi_normed_ring Prod.nonUnitalSeminormedRing
-/
@@ -300,8 +299,7 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
Finset.univ.sup ((fun i => ‖x i‖₊) * fun i => ‖y i‖₊) :=
Finset.sup_mono_fun fun b hb => norm_mul_le _ _
_ ≤ (Finset.univ.sup fun i => ‖x i‖₊) * Finset.univ.sup fun i => ‖y i‖₊ :=
- Finset.sup_mul_le_mul_sup_of_nonneg _ (fun i _ => zero_le _) fun i _ => zero_le _
- }
+ Finset.sup_mul_le_mul_sup_of_nonneg _ (fun i _ => zero_le _) fun i _ => zero_le _ }
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
-/
@@ -534,7 +532,6 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
rw [mul_sub, sub_mul, sub_add_sub_cancel]
_ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
-
refine' squeeze_zero (fun e => norm_nonneg _) this _
convert
((continuous_fst.tendsto x).norm.mul
@@ -690,7 +687,6 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
_ = ‖r - e‖ / ‖r‖ / ‖e‖ := by field_simp [mul_comm]
_ ≤ ‖r - e‖ / ‖r‖ / ε :=
div_le_div_of_le_left (div_nonneg (norm_nonneg _) (norm_nonneg _)) ε0 he.le
-
refine' squeeze_zero' (eventually_of_forall fun _ => norm_nonneg _) this _
refine' (((continuous_const.sub continuous_id).norm.div_const _).div_const _).tendsto' _ _ _
simp
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -536,7 +536,8 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
refine' squeeze_zero (fun e => norm_nonneg _) this _
- convert((continuous_fst.tendsto x).norm.mul
+ convert
+ ((continuous_fst.tendsto x).norm.mul
((continuous_snd.tendsto x).sub tendsto_const_nhds).norm).add
(((continuous_fst.tendsto x).sub tendsto_const_nhds).norm.mul _)
show tendsto _ _ _; exact tendsto_const_nhds
@@ -680,7 +681,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
rcases exists_between r0' with ⟨ε, ε0, εr⟩
have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε :=
by
- filter_upwards [(isOpen_lt continuous_const continuous_norm).eventually_mem εr]with e he
+ filter_upwards [(isOpen_lt continuous_const continuous_norm).eventually_mem εr] with e he
have e0 : e ≠ 0 := norm_pos_iff.1 (ε0.trans he)
calc
‖e⁻¹ - r⁻¹‖ = ‖r‖⁻¹ * ‖r - e‖ * ‖e‖⁻¹ := by
@@ -823,7 +824,7 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
@[instance]
-theorem nhdsWithin_isUnit_neBot : NeBot (𝓝[{ x : α | IsUnit x }] 0) := by
+theorem nhdsWithin_isUnit_neBot : NeBot (𝓝[{x : α | IsUnit x}] 0) := by
simpa only [isUnit_iff_ne_zero] using punctured_nhds_ne_bot (0 : α)
#align normed_field.nhds_within_is_unit_ne_bot NormedField.nhdsWithin_isUnit_neBot
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -33,7 +33,7 @@ open scoped Topology BigOperators NNReal ENNReal uniformity Pointwise
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
- PseudoMetricSpace α where
+ PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align non_unital_semi_normed_ring NonUnitalSeminormedRing
@@ -707,7 +707,7 @@ theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k :
‖φ x‖ = 1 :=
by
rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
- exacts[norm_nonneg _, zero_le_one, k.pos]
+ exacts [norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -27,7 +27,7 @@ variable {α : Type _} {β : Type _} {γ : Type _} {ι : Type _}
open Filter Metric
-open Topology BigOperators NNReal ENNReal uniformity Pointwise
+open scoped Topology BigOperators NNReal ENNReal uniformity Pointwise
#print NonUnitalSeminormedRing /-
/-- A non-unital seminormed ring is a not-necessarily-unital ring
@@ -837,9 +837,11 @@ theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
+#print NormedField.exists_lt_nnnorm_lt /-
theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
exact_mod_cast exists_lt_norm_lt α r₁.prop h
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
+-/
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ))
where dense := by
@@ -849,6 +851,7 @@ instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α →
⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
+#print NormedField.denselyOrdered_range_nnnorm /-
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -856,6 +859,7 @@ instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α
let ⟨z, h⟩ := exists_lt_nnnorm_lt α hxy
⟨⟨‖z‖₊, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
+-/
theorem denseRange_nnnorm : DenseRange (nnnorm : α → ℝ≥0) :=
dense_of_exists_between fun _ _ hr =>
@@ -892,7 +896,7 @@ end Real
namespace NNReal
-open NNReal
+open scoped NNReal
@[simp]
theorem norm_eq (x : ℝ≥0) : ‖(x : ℝ)‖ = x := by rw [Real.norm_eq_abs, x.abs_eq]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -198,12 +198,6 @@ instance (priority := 100) NonUnitalSeminormedRing.toSeminormedAddCommGroup
instance [SeminormedAddCommGroup α] [One α] [NormOneClass α] : NormOneClass (ULift α) :=
⟨by simp [ULift.norm_def]⟩
-/- warning: prod.norm_one_class -> Prod.normOneClass is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} α] [_inst_2 : One.{u1} α] [_inst_3 : NormOneClass.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) _inst_2] [_inst_4 : SeminormedAddCommGroup.{u2} β] [_inst_5 : One.{u2} β] [_inst_6 : NormOneClass.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) _inst_5], NormOneClass.{max u1 u2} (Prod.{u1, u2} α β) (Prod.hasNorm.{u1, u2} α β (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4)) (Prod.hasOne.{u1, u2} α β _inst_2 _inst_5)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} α] [_inst_2 : One.{u1} α] [_inst_3 : NormOneClass.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) _inst_2] [_inst_4 : SeminormedAddCommGroup.{u2} β] [_inst_5 : One.{u2} β] [_inst_6 : NormOneClass.{u2} β (SeminormedAddCommGroup.toNorm.{u2} β _inst_4) _inst_5], NormOneClass.{max u2 u1} (Prod.{u1, u2} α β) (Prod.toNorm.{u1, u2} α β (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) (SeminormedAddCommGroup.toNorm.{u2} β _inst_4)) (Prod.instOneProd.{u1, u2} α β _inst_2 _inst_5)
-Case conversion may be inaccurate. Consider using '#align prod.norm_one_class Prod.normOneClassₓ'. -/
instance Prod.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α]
[SeminormedAddCommGroup β] [One β] [NormOneClass β] : NormOneClass (α × β) :=
⟨by simp [Prod.norm_def]⟩
@@ -228,66 +222,30 @@ section NonUnitalSeminormedRing
variable [NonUnitalSeminormedRing α]
-/- warning: norm_mul_le -> norm_mul_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) b))
-Case conversion may be inaccurate. Consider using '#align norm_mul_le norm_mul_leₓ'. -/
theorem norm_mul_le (a b : α) : ‖a * b‖ ≤ ‖a‖ * ‖b‖ :=
NonUnitalSeminormedRing.norm_mul _ _
#align norm_mul_le norm_mul_le
-/- warning: nnnorm_mul_le -> nnnorm_mul_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
-Case conversion may be inaccurate. Consider using '#align nnnorm_mul_le nnnorm_mul_leₓ'. -/
theorem nnnorm_mul_le (a b : α) : ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊ := by
simpa only [← norm_toNNReal, ← Real.toNNReal_mul (norm_nonneg _)] using
Real.toNNReal_mono (norm_mul_le _ _)
#align nnnorm_mul_le nnnorm_mul_le
-/- warning: one_le_norm_one -> one_le_norm_one is a dubious translation:
-lean 3 declaration is
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
-but is expected to have type
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (Semiring.toOne.{u1} β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align one_le_norm_one one_le_norm_oneₓ'. -/
theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖ :=
(le_mul_iff_one_le_left <| norm_pos_iff.mpr (one_ne_zero : (1 : β) ≠ 0)).mp
(by simpa only [mul_one] using norm_mul_le (1 : β) 1)
#align one_le_norm_one one_le_norm_one
-/- warning: one_le_nnnorm_one -> one_le_nnnorm_one is a dubious translation:
-lean 3 declaration is
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
-but is expected to have type
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (Semiring.toOne.{u1} β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align one_le_nnnorm_one one_le_nnnorm_oneₓ'. -/
theorem one_le_nnnorm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖₊ :=
one_le_norm_one β
#align one_le_nnnorm_one one_le_nnnorm_one
-/- warning: filter.tendsto.zero_mul_is_bounded_under_le -> Filter.Tendsto.zero_mul_isBoundedUnder_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.Tendsto.{u2, u1} ι α f l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))))) -> (Filter.IsBoundedUnder.{0, u2} Real ι (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1)) g)) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.Tendsto.{u2, u1} ι α f l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))) -> (Filter.IsBoundedUnder.{0, u2} Real ι (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1131 : Real) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1133 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1131 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1133) l (Function.comp.{succ u2, succ u1, 1} ι α Real (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1152 : α) => Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1152) g)) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_leₓ'. -/
theorem Filter.Tendsto.zero_mul_isBoundedUnder_le {f g : ι → α} {l : Filter ι}
(hf : Tendsto f l (𝓝 0)) (hg : IsBoundedUnder (· ≤ ·) l (norm ∘ g)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hf.op_zero_isBoundedUnder_le hg (· * ·) norm_mul_le
#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_le
-/- warning: filter.is_bounded_under_le.mul_tendsto_zero -> Filter.isBoundedUnder_le_mul_tendsto_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.IsBoundedUnder.{0, u2} Real ι (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1)) f)) -> (Filter.Tendsto.{u2, u1} ι α g l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))))) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.IsBoundedUnder.{0, u2} Real ι (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1225 : Real) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1227 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1225 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1227) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1)) f)) -> (Filter.Tendsto.{u2, u1} ι α g l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zeroₓ'. -/
theorem Filter.isBoundedUnder_le_mul_tendsto_zero {f g : ι → α} {l : Filter ι}
(hf : IsBoundedUnder (· ≤ ·) l (norm ∘ f)) (hg : Tendsto g l (𝓝 0)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
@@ -295,23 +253,11 @@ theorem Filter.isBoundedUnder_le_mul_tendsto_zero {f g : ι → α} {l : Filter
(norm_mul_le y x).trans_eq (mul_comm _ _)
#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zero
-/- warning: mul_left_bound -> mulLeft_bound is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) y))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) (NonUnitalSeminormedRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) y))
-Case conversion may be inaccurate. Consider using '#align mul_left_bound mulLeft_boundₓ'. -/
/-- In a seminormed ring, the left-multiplication `add_monoid_hom` is bounded. -/
theorem mulLeft_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulLeft x y‖ ≤ ‖x‖ * ‖y‖ :=
norm_mul_le x
#align mul_left_bound mulLeft_bound
-/- warning: mul_right_bound -> mulRight_bound is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) y))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) (NonUnitalSeminormedRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) y))
-Case conversion may be inaccurate. Consider using '#align mul_right_bound mulRight_boundₓ'. -/
/-- In a seminormed ring, the right-multiplication `add_monoid_hom` is bounded. -/
theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y => by
rw [mul_comm]; convert norm_mul_le y x
@@ -374,12 +320,6 @@ section SeminormedRing
variable [SeminormedRing α]
-/- warning: subalgebra.semi_normed_ring -> Subalgebra.seminormedRing is a dubious translation:
-lean 3 declaration is
- forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
-but is expected to have type
- forall {𝕜 : Type.{u1}} [_x : CommRing.{u1} 𝕜] {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] [_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))] (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
-Case conversion may be inaccurate. Consider using '#align subalgebra.semi_normed_ring Subalgebra.seminormedRingₓ'. -/
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
@@ -388,12 +328,6 @@ instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type
{ s.toSubmodule.SeminormedAddCommGroup with norm_mul := fun a b => norm_mul_le a.1 b.1 }
#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
-/- warning: subalgebra.normed_ring -> Subalgebra.normedRing is a dubious translation:
-lean 3 declaration is
- forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
-but is expected to have type
- forall {𝕜 : Type.{u1}} [_x : CommRing.{u1} 𝕜] {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] [_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))] (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
-Case conversion may be inaccurate. Consider using '#align subalgebra.normed_ring Subalgebra.normedRingₓ'. -/
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
@@ -402,12 +336,6 @@ instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _}
{ s.SeminormedRing with }
#align subalgebra.normed_ring Subalgebra.normedRing
-/- warning: nat.norm_cast_le -> Nat.norm_cast_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Real (HasLiftT.mk.{1, 1} Nat Real (CoeTCₓ.coe.{1, 1} Nat Real (Nat.castCoe.{0} Real Real.hasNatCast))) n) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Nat.cast.{0} Real Real.natCast n) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align nat.norm_cast_le Nat.norm_cast_leₓ'. -/
theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
| 0 => by simp
| n + 1 => by
@@ -415,12 +343,6 @@ theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
exact norm_add_le_of_le (Nat.norm_cast_le n) le_rfl
#align nat.norm_cast_le Nat.norm_cast_le
-/- warning: list.norm_prod_le' -> List.norm_prod_le' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l)))
-Case conversion may be inaccurate. Consider using '#align list.norm_prod_le' List.norm_prod_le'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l.map norm).Prod
@@ -432,44 +354,20 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
exact List.norm_prod_le' (List.cons_ne_nil b l)
#align list.norm_prod_le' List.norm_prod_le'
-/- warning: list.nnnorm_prod_le' -> List.nnnorm_prod_le' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
-Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le' List.nnnorm_prod_le'ₓ'. -/
theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
(List.norm_prod_le' hl).trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le' List.nnnorm_prod_le'
-/- warning: list.norm_prod_le -> List.norm_prod_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l))
-Case conversion may be inaccurate. Consider using '#align list.norm_prod_le List.norm_prod_leₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤ (l.map norm).Prod
| [] => by simp
| a::l => List.norm_prod_le' (List.cons_ne_nil a l)
#align list.norm_prod_le List.norm_prod_le
-/- warning: list.nnnorm_prod_le -> List.nnnorm_prod_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
-Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le List.nnnorm_prod_leₓ'. -/
theorem List.nnnorm_prod_le [NormOneClass α] (l : List α) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
l.norm_prod_le.trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le List.nnnorm_prod_le
-/- warning: finset.norm_prod_le' -> Finset.norm_prod_le' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i))))
-Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le' Finset.norm_prod_le'ₓ'. -/
theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
@@ -478,23 +376,11 @@ theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (
simpa using List.norm_prod_le' this
#align finset.norm_prod_le' Finset.norm_prod_le'
-/- warning: finset.nnnorm_prod_le' -> Finset.nnnorm_prod_le' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
-Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'ₓ'. -/
theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le' hs f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'
-/- warning: finset.norm_prod_le -> Finset.norm_prod_le is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Semiring.toOne.{u2} α (CommSemiring.toSemiring.{u2} α (CommRing.toCommSemiring.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2)))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
-Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le Finset.norm_prod_leₓ'. -/
theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
@@ -502,23 +388,11 @@ theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α]
simpa using (l.map f).norm_prod_le
#align finset.norm_prod_le Finset.norm_prod_le
-/- warning: finset.nnnorm_prod_le -> Finset.nnnorm_prod_le is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Semiring.toOne.{u2} α (CommSemiring.toSemiring.{u2} α (CommRing.toCommSemiring.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2)))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
-Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le Finset.nnnorm_prod_leₓ'. -/
theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le Finset.nnnorm_prod_le
-/- warning: nnnorm_pow_le' -> nnnorm_pow_le' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
-Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le' nnnorm_pow_le'ₓ'. -/
/-- If `α` is a seminormed ring, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n` for `n > 0`.
See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
@@ -528,46 +402,22 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' n.succ_pos) _)
#align nnnorm_pow_le' nnnorm_pow_le'
-/- warning: nnnorm_pow_le -> nnnorm_pow_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
-Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le nnnorm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖₊ = 1`, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n`.
See also `nnnorm_pow_le'`.-/
theorem nnnorm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n :=
Nat.recOn n (by simp only [pow_zero, nnnorm_one]) fun k hk => nnnorm_pow_le' a k.succ_pos
#align nnnorm_pow_le nnnorm_pow_le
-/- warning: norm_pow_le' -> norm_pow_le' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n))
-Case conversion may be inaccurate. Consider using '#align norm_pow_le' norm_pow_le'ₓ'. -/
/-- If `α` is a seminormed ring, then `‖a ^ n‖ ≤ ‖a‖ ^ n` for `n > 0`. See also `norm_pow_le`. -/
theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^ n := by
simpa only [NNReal.coe_pow, coe_nnnorm] using NNReal.coe_mono (nnnorm_pow_le' a h)
#align norm_pow_le' norm_pow_le'
-/- warning: norm_pow_le -> norm_pow_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)
-Case conversion may be inaccurate. Consider using '#align norm_pow_le norm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`. See also `norm_pow_le'`.-/
theorem norm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖ ≤ ‖a‖ ^ n :=
Nat.recOn n (by simp only [pow_zero, norm_one]) fun n hn => norm_pow_le' a n.succ_pos
#align norm_pow_le norm_pow_le
-/- warning: eventually_norm_pow_le -> eventually_norm_pow_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α), Filter.Eventually.{0} Nat (fun (n : Nat) => LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α), Filter.Eventually.{0} Nat (fun (n : Nat) => LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)))
-Case conversion may be inaccurate. Consider using '#align eventually_norm_pow_le eventually_norm_pow_leₓ'. -/
theorem eventually_norm_pow_le (a : α) : ∀ᶠ n : ℕ in atTop, ‖a ^ n‖ ≤ ‖a‖ ^ n :=
eventually_atTop.mpr ⟨1, fun b h => norm_pow_le' a (Nat.succ_le_iff.mp h)⟩
#align eventually_norm_pow_le eventually_norm_pow_le
@@ -636,22 +486,10 @@ section NormedRing
variable [NormedRing α]
-/- warning: units.norm_pos -> Units.norm_pos is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1))))), LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedRing.toNorm.{u1} α _inst_1) (Units.val.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1)))) x))
-Case conversion may be inaccurate. Consider using '#align units.norm_pos Units.norm_posₓ'. -/
theorem Units.norm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖ :=
norm_pos_iff.mpr (Units.ne_zero x)
#align units.norm_pos Units.norm_pos
-/- warning: units.nnnorm_pos -> Units.nnnorm_pos is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1))))), LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 0 (Zero.toOfNat0.{0} NNReal instNNRealZero)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) (Units.val.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1)))) x))
-Case conversion may be inaccurate. Consider using '#align units.nnnorm_pos Units.nnnorm_posₓ'. -/
theorem Units.nnnorm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖₊ :=
x.norm_pos
#align units.nnnorm_pos Units.nnnorm_pos
@@ -682,12 +520,6 @@ instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
end NormedRing
-/- warning: semi_normed_ring_top_monoid -> semi_normed_ring_top_monoid is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α], ContinuousMul.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α], ContinuousMul.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))
-Case conversion may be inaccurate. Consider using '#align semi_normed_ring_top_monoid semi_normed_ring_top_monoidₓ'. -/
-- see Note [lower instance priority]
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
@@ -723,23 +555,11 @@ section NormedDivisionRing
variable [NormedDivisionRing α]
-/- warning: norm_mul -> norm_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) b))
-Case conversion may be inaccurate. Consider using '#align norm_mul norm_mulₓ'. -/
@[simp]
theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
NormedDivisionRing.norm_mul' a b
#align norm_mul norm_mul
-/- warning: normed_division_ring.to_norm_one_class -> NormedDivisionRing.to_normOneClass is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))
-Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClassₓ'. -/
instance (priority := 900) NormedDivisionRing.to_normOneClass : NormOneClass α :=
⟨mul_left_cancel₀ (mt norm_eq_zero.1 (one_ne_zero' α)) <| by rw [← norm_mul, mul_one, mul_one]⟩
#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClass
@@ -754,12 +574,6 @@ instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
#align is_absolute_value_norm isAbsoluteValue_norm
-/
-/- warning: nnnorm_mul -> nnnorm_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
-Case conversion may be inaccurate. Consider using '#align nnnorm_mul nnnorm_mulₓ'. -/
@[simp]
theorem nnnorm_mul (a b : α) : ‖a * b‖₊ = ‖a‖₊ * ‖b‖₊ :=
NNReal.eq <| norm_mul a b
@@ -781,87 +595,39 @@ def nnnormHom : α →*₀ ℝ≥0 :=
#align nnnorm_hom nnnormHom
-/
-/- warning: norm_pow -> norm_pow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) n)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) n)
-Case conversion may be inaccurate. Consider using '#align norm_pow norm_powₓ'. -/
@[simp]
theorem norm_pow (a : α) : ∀ n : ℕ, ‖a ^ n‖ = ‖a‖ ^ n :=
(normHom.toMonoidHom : α →* ℝ).map_pow a
#align norm_pow norm_pow
-/- warning: nnnorm_pow -> nnnorm_pow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
-Case conversion may be inaccurate. Consider using '#align nnnorm_pow nnnorm_powₓ'. -/
@[simp]
theorem nnnorm_pow (a : α) (n : ℕ) : ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_pow a n
#align nnnorm_pow nnnorm_pow
-/- warning: list.norm_prod -> List.norm_prod is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) l))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) l))
-Case conversion may be inaccurate. Consider using '#align list.norm_prod List.norm_prodₓ'. -/
protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Prod :=
(normHom.toMonoidHom : α →* ℝ).map_list_prod _
#align list.norm_prod List.norm_prod
-/- warning: list.nnnorm_prod -> List.nnnorm_prod is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
-Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod List.nnnorm_prodₓ'. -/
protected theorem List.nnnorm_prod (l : List α) : ‖l.Prod‖₊ = (l.map nnnorm).Prod :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_list_prod _
#align list.nnnorm_prod List.nnnorm_prod
-/- warning: norm_div -> norm_div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivInvMonoid.toHasDiv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a b)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivisionRing.toDiv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a b)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) b))
-Case conversion may be inaccurate. Consider using '#align norm_div norm_divₓ'. -/
@[simp]
theorem norm_div (a b : α) : ‖a / b‖ = ‖a‖ / ‖b‖ :=
map_div₀ (normHom : α →*₀ ℝ) a b
#align norm_div norm_div
-/- warning: nnnorm_div -> nnnorm_div is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivInvMonoid.toHasDiv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a b)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal NNReal.hasDiv) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivisionRing.toDiv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a b)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal (CanonicallyLinearOrderedSemifield.toDiv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
-Case conversion may be inaccurate. Consider using '#align nnnorm_div nnnorm_divₓ'. -/
@[simp]
theorem nnnorm_div (a b : α) : ‖a / b‖₊ = ‖a‖₊ / ‖b‖₊ :=
map_div₀ (nnnormHom : α →*₀ ℝ≥0) a b
#align nnnorm_div nnnorm_div
-/- warning: norm_inv -> norm_inv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a)) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) a)) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a))
-Case conversion may be inaccurate. Consider using '#align norm_inv norm_invₓ'. -/
@[simp]
theorem norm_inv (a : α) : ‖a⁻¹‖ = ‖a‖⁻¹ :=
map_inv₀ (normHom : α →*₀ ℝ) a
#align norm_inv norm_inv
-/- warning: nnnorm_inv -> nnnorm_inv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a)) (Inv.inv.{0} NNReal (DivInvMonoid.toHasInv.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.canonicallyLinearOrderedSemifield)))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) a)) (Inv.inv.{0} NNReal (CanonicallyLinearOrderedSemifield.toInv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a))
-Case conversion may be inaccurate. Consider using '#align nnnorm_inv nnnorm_invₓ'. -/
@[simp]
theorem nnnorm_inv (a : α) : ‖a⁻¹‖₊ = ‖a‖₊⁻¹ :=
NNReal.eq <| by simp
@@ -874,46 +640,22 @@ theorem norm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖ = ‖a‖ ^ n :=
#align norm_zpow norm_zpow
-/
-/- warning: nnnorm_zpow -> nnnorm_zpow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Int), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Int α (instHPow.{u1, 0} α Int (DivInvMonoid.Pow.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Int NNReal (instHPow.{0, 0} NNReal Int (DivInvMonoid.Pow.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.canonicallyLinearOrderedSemifield))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Int), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Int α (instHPow.{u1, 0} α Int (DivInvMonoid.Pow.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Int NNReal (instHPow.{0, 0} NNReal Int (DivInvMonoid.Pow.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
-Case conversion may be inaccurate. Consider using '#align nnnorm_zpow nnnorm_zpowₓ'. -/
@[simp]
theorem nnnorm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
map_zpow₀ (nnnormHom : α →*₀ ℝ≥0)
#align nnnorm_zpow nnnorm_zpow
-/- warning: dist_inv_inv₀ -> dist_inv_inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Eq.{1} Real (Dist.dist.{u1} α (PseudoMetricSpace.toHasDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) z) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) w)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Dist.dist.{u1} α (PseudoMetricSpace.toHasDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) z) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) w))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Eq.{1} Real (Dist.dist.{u1} α (PseudoMetricSpace.toDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) z) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) w)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Dist.dist.{u1} α (PseudoMetricSpace.toDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) z) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) w))))
-Case conversion may be inaccurate. Consider using '#align dist_inv_inv₀ dist_inv_inv₀ₓ'. -/
theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) :=
by
rw [dist_eq_norm, inv_sub_inv' hz hw, norm_mul, norm_mul, norm_inv, norm_inv, mul_comm ‖z‖⁻¹,
mul_assoc, dist_eq_norm', div_eq_mul_inv, mul_inv]
#align dist_inv_inv₀ dist_inv_inv₀
-/- warning: nndist_inv_inv₀ -> nndist_inv_inv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Eq.{1} NNReal (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) z) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) w)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal NNReal.hasDiv) (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) z) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) w))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Eq.{1} NNReal (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) z) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) w)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal (CanonicallyLinearOrderedSemifield.toDiv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)) (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) z) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) w))))
-Case conversion may be inaccurate. Consider using '#align nndist_inv_inv₀ nndist_inv_inv₀ₓ'. -/
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by rw [← NNReal.coe_eq];
simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
#align nndist_inv_inv₀ nndist_inv_inv₀
-/- warning: filter.tendsto_mul_left_cobounded -> Filter.tendsto_mul_left_cobounded is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5147 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5147) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
@@ -922,12 +664,6 @@ theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
tendsto_const_nhds.mul_at_top (norm_pos_iff.2 ha) tendsto_comap
#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_cobounded
-/- warning: filter.tendsto_mul_right_cobounded -> Filter.tendsto_mul_right_cobounded is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_coboundedₓ'. -/
/-- Multiplication on the right by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
@@ -936,12 +672,6 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
tendsto_comap.at_top_mul (norm_pos_iff.2 ha) tendsto_const_nhds
#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_cobounded
-/- warning: normed_division_ring.to_has_continuous_inv₀ -> NormedDivisionRing.to_hasContinuousInv₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], HasContinuousInv₀.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], HasContinuousInv₀.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))) (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_has_continuous_inv₀ NormedDivisionRing.to_hasContinuousInv₀ₓ'. -/
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α :=
by
@@ -973,12 +703,6 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
#align normed_division_ring.to_topological_division_ring NormedDivisionRing.to_topologicalDivisionRing
-/
-/- warning: norm_map_one_of_pow_eq_one -> norm_map_one_of_pow_eq_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (fun (_x : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) => β -> α) (MonoidHom.hasCoeToFun.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) φ x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_oneₓ'. -/
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
by
@@ -986,12 +710,6 @@ theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k :
exacts[norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
-/- warning: norm_one_of_pow_eq_one -> norm_one_of_pow_eq_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) x (PNat.val k)) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
-Case conversion may be inaccurate. Consider using '#align norm_one_of_pow_eq_one norm_one_of_pow_eq_oneₓ'. -/
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
norm_map_one_of_pow_eq_one (MonoidHom.id α) h
#align norm_one_of_pow_eq_one norm_one_of_pow_eq_one
@@ -1060,12 +778,6 @@ theorem norm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖ = ∏
#align norm_prod norm_prod
-/
-/- warning: nnnorm_prod -> nnnorm_prod is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedField.{u1} α] (s : Finset.{u2} β) (f : β -> α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (Finset.prod.{u1, u2} α β (CommRing.toCommMonoid.{u1} α (SeminormedCommRing.toCommRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1)))) s (fun (b : β) => f b))) (Finset.prod.{0, u2} NNReal β (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (b : β) => NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (f b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedField.{u1} α] (s : Finset.{u2} β) (f : β -> α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (Finset.prod.{u1, u2} α β (CommRing.toCommMonoid.{u1} α (EuclideanDomain.toCommRing.{u1} α (Field.toEuclideanDomain.{u1} α (NormedField.toField.{u1} α _inst_1)))) s (fun (b : β) => f b))) (Finset.prod.{0, u2} NNReal β (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (b : β) => NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (f b)))
-Case conversion may be inaccurate. Consider using '#align nnnorm_prod nnnorm_prodₓ'. -/
@[simp]
theorem nnnorm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖₊ = ∏ b in s, ‖f b‖₊ :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_prod f s
@@ -1079,57 +791,27 @@ section Nontrivially
variable (α) [NontriviallyNormedField α]
-/- warning: normed_field.exists_one_lt_norm -> NormedField.exists_one_lt_norm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_one_lt_norm NormedField.exists_one_lt_normₓ'. -/
theorem exists_one_lt_norm : ∃ x : α, 1 < ‖x‖ :=
‹NontriviallyNormedField α›.non_trivial
#align normed_field.exists_one_lt_norm NormedField.exists_one_lt_norm
-/- warning: normed_field.exists_lt_norm -> NormedField.exists_lt_norm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] (r : Real), Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.hasLt r (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] (r : Real), Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.instLTReal r (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_norm NormedField.exists_lt_normₓ'. -/
theorem exists_lt_norm (r : ℝ) : ∃ x : α, r < ‖x‖ :=
let ⟨w, hw⟩ := exists_one_lt_norm α
let ⟨n, hn⟩ := pow_unbounded_of_one_lt r hw
⟨w ^ n, by rwa [norm_pow]⟩
#align normed_field.exists_lt_norm NormedField.exists_lt_norm
-/- warning: normed_field.exists_norm_lt -> NormedField.exists_norm_lt is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) r)))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) r)))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_norm_lt NormedField.exists_norm_ltₓ'. -/
theorem exists_norm_lt {r : ℝ} (hr : 0 < r) : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < r :=
let ⟨w, hw⟩ := exists_lt_norm α r⁻¹
⟨w⁻¹, by rwa [← Set.mem_Ioo, norm_inv, ← Set.mem_inv, Set.inv_Ioo_0_left hr]⟩
#align normed_field.exists_norm_lt NormedField.exists_norm_lt
-/- warning: normed_field.exists_norm_lt_one -> NormedField.exists_norm_lt_one is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_norm_lt_one NormedField.exists_norm_lt_oneₓ'. -/
theorem exists_norm_lt_one : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < 1 :=
exists_norm_lt α one_pos
#align normed_field.exists_norm_lt_one NormedField.exists_norm_lt_one
variable {α}
-/- warning: normed_field.punctured_nhds_ne_bot -> NormedField.punctured_nhds_neBot is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α] (x : α), Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) x)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α] (x : α), Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) x)))
-Case conversion may be inaccurate. Consider using '#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBotₓ'. -/
@[instance]
theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
by
@@ -1140,12 +822,6 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
rwa [dist_comm, dist_eq_norm, add_sub_cancel']
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
-/- warning: normed_field.nhds_within_is_unit_ne_bot -> NormedField.nhdsWithin_isUnit_neBot is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α], Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)))))))))))) (setOf.{u1} α (fun (x : α) => IsUnit.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))) x)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α], Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommGroupWithZero.toCommMonoidWithZero.{u1} α (Semifield.toCommGroupWithZero.{u1} α (Field.toSemifield.{u1} α (NormedField.toField.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)))))))) (setOf.{u1} α (fun (x : α) => IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (Semifield.toDivisionSemiring.{u1} α (Field.toSemifield.{u1} α (NormedField.toField.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x)))
-Case conversion may be inaccurate. Consider using '#align normed_field.nhds_within_is_unit_ne_bot NormedField.nhdsWithin_isUnit_neBotₓ'. -/
@[instance]
theorem nhdsWithin_isUnit_neBot : NeBot (𝓝[{ x : α | IsUnit x }] 0) := by
simpa only [isUnit_iff_ne_zero] using punctured_nhds_ne_bot (0 : α)
@@ -1157,32 +833,14 @@ section Densely
variable (α) [DenselyNormedField α]
-/- warning: normed_field.exists_lt_norm_lt -> NormedField.exists_lt_norm_lt is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : Real} {r₂ : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r₁) -> (LT.lt.{0} Real Real.hasLt r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt r₁ (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x) r₂)))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : Real} {r₂ : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r₁) -> (LT.lt.{0} Real Real.instLTReal r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal r₁ (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x) r₂)))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_ltₓ'. -/
theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖ ∧ ‖x‖ < r₂ :=
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
-/- warning: normed_field.exists_lt_nnnorm_lt -> NormedField.exists_lt_nnnorm_lt is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : NNReal} {r₂ : NNReal}, (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) r₁ (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x)) (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x) r₂)))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : NNReal} {r₂ : NNReal}, (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) r₁ (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x)) (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x) r₂)))
-Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_ltₓ'. -/
theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
exact_mod_cast exists_lt_norm_lt α r₁.prop h
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
-/- warning: normed_field.densely_ordered_range_norm -> NormedField.denselyOrdered_range_norm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))) (Subtype.hasLt.{0} Real Real.hasLt (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (Set.Elem.{0} Real (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))) (Subtype.lt.{0} Real Real.instLTReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_normₓ'. -/
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -1191,12 +849,6 @@ instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α →
⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
-/- warning: normed_field.densely_ordered_range_nnnorm -> NormedField.denselyOrdered_range_nnnorm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (coeSort.{1, 2} (Set.{0} NNReal) Type (Set.hasCoeToSort.{0} NNReal) (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))) (Subtype.hasLt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (fun (x : NNReal) => Membership.Mem.{0, 0} NNReal (Set.{0} NNReal) (Set.hasMem.{0} NNReal) x (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (Set.Elem.{0} NNReal (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))) (Subtype.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (fun (x : NNReal) => Membership.mem.{0, 0} NNReal (Set.{0} NNReal) (Set.instMembershipSet.{0} NNReal) x (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))))
-Case conversion may be inaccurate. Consider using '#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnormₓ'. -/
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -1205,12 +857,6 @@ instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α
⟨⟨‖z‖₊, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
-/- warning: normed_field.dense_range_nnnorm -> NormedField.denseRange_nnnorm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenseRange.{0, u1} NNReal NNReal.topologicalSpace α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))))
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenseRange.{0, u1} NNReal NNReal.instTopologicalSpaceNNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))))
-Case conversion may be inaccurate. Consider using '#align normed_field.dense_range_nnnorm NormedField.denseRange_nnnormₓ'. -/
theorem denseRange_nnnorm : DenseRange (nnnorm : α → ℝ≥0) :=
dense_of_exists_between fun _ _ hr =>
let ⟨x, h⟩ := exists_lt_nnnorm_lt α hr
@@ -1234,22 +880,10 @@ noncomputable instance : DenselyNormedField ℝ
namespace Real
-/- warning: real.to_nnreal_mul_nnnorm -> Real.toNNReal_mul_nnnorm is a dubious translation:
-lean 3 declaration is
- forall {x : Real} (y : Real), (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) x) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (Real.toNNReal x) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x y)))
-but is expected to have type
- forall {x : Real} (y : Real), (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) x) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (Real.toNNReal x) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x y)))
-Case conversion may be inaccurate. Consider using '#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnormₓ'. -/
theorem toNNReal_mul_nnnorm {x : ℝ} (y : ℝ) (hx : 0 ≤ x) : x.toNNReal * ‖y‖₊ = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hx]
#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnorm
-/- warning: real.nnnorm_mul_to_nnreal -> Real.nnnorm_mul_toNNReal is a dubious translation:
-lean 3 declaration is
- forall (x : Real) {y : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) y) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) x) (Real.toNNReal y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x y)))
-but is expected to have type
- forall (x : Real) {y : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) y) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) x) (Real.toNNReal y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x y)))
-Case conversion may be inaccurate. Consider using '#align real.nnnorm_mul_to_nnreal Real.nnnorm_mul_toNNRealₓ'. -/
theorem nnnorm_mul_toNNReal (x : ℝ) {y : ℝ} (hy : 0 ≤ y) : ‖x‖₊ * y.toNNReal = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hy]
#align real.nnnorm_mul_to_nnreal Real.nnnorm_mul_toNNReal
@@ -1260,22 +894,10 @@ namespace NNReal
open NNReal
-/- warning: nnreal.norm_eq -> NNReal.norm_eq is a dubious translation:
-lean 3 declaration is
- forall (x : NNReal), Eq.{1} Real (Norm.norm.{0} Real Real.hasNorm ((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))) x)) ((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))) x)
-but is expected to have type
- forall (x : NNReal), Eq.{1} Real (Norm.norm.{0} Real Real.norm (NNReal.toReal x)) (NNReal.toReal x)
-Case conversion may be inaccurate. Consider using '#align nnreal.norm_eq NNReal.norm_eqₓ'. -/
@[simp]
theorem norm_eq (x : ℝ≥0) : ‖(x : ℝ)‖ = x := by rw [Real.norm_eq_abs, x.abs_eq]
#align nnreal.norm_eq NNReal.norm_eq
-/- warning: nnreal.nnnorm_eq -> NNReal.nnnorm_eq is a dubious translation:
-lean 3 declaration is
- forall (x : NNReal), Eq.{1} NNReal (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) ((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))) x)) x
-but is expected to have type
- forall (x : NNReal), Eq.{1} NNReal (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (NNReal.toReal x)) x
-Case conversion may be inaccurate. Consider using '#align nnreal.nnnorm_eq NNReal.nnnorm_eqₓ'. -/
@[simp]
theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
NNReal.eq <| Real.norm_of_nonneg x.2
@@ -1283,12 +905,6 @@ theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
end NNReal
-/- warning: norm_norm -> norm_norm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} α] (x : α), Eq.{1} Real (Norm.norm.{0} Real Real.hasNorm (Norm.norm.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) x)) (Norm.norm.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) x)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} α] (x : α), Eq.{1} Real (Norm.norm.{0} Real Real.norm (Norm.norm.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) x)) (Norm.norm.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) x)
-Case conversion may be inaccurate. Consider using '#align norm_norm norm_normₓ'. -/
@[simp]
theorem norm_norm [SeminormedAddCommGroup α] (x : α) : ‖‖x‖‖ = ‖x‖ :=
Real.norm_of_nonneg (norm_nonneg _)
@@ -1301,12 +917,6 @@ theorem nnnorm_norm [SeminormedAddCommGroup α] (a : α) : ‖‖a‖‖₊ =
#align nnnorm_norm nnnorm_norm
-/
-/- warning: normed_add_comm_group.tendsto_at_top -> NormedAddCommGroup.tendsto_atTop is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {β : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_3))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_3) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_3))))) (f n) b)) ε))))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] {β : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_3))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_3) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_3))))) (f n) b)) ε))))
-Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTopₓ'. -/
/-- A restatement of `metric_space.tendsto_at_top` in terms of the norm. -/
theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β : Type _}
[SeminormedAddCommGroup β] {f : α → β} {b : β} :
@@ -1314,12 +924,6 @@ theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β :
(atTop_basis.tendsto_iffₓ Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTop
-/- warning: normed_add_comm_group.tendsto_at_top' -> NormedAddCommGroup.tendsto_atTop' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : NoMaxOrder.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] {β : Type.{u2}} [_inst_4 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_4))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_4))))) (f n) b)) ε))))
-but is expected to have type
- forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] [_inst_3 : NoMaxOrder.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2)))] {β : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_4))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_4) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_4))))) (f n) b)) ε))))
-Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'ₓ'. -/
/-- A variant of `normed_add_comm_group.tendsto_at_top` that
uses `∃ N, ∀ n > N, ...` rather than `∃ N, ∀ n ≥ N, ...`
-/
@@ -1477,12 +1081,6 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
#align normed_field.induced NormedField.induced
-/
-/- warning: norm_one_class.induced -> NormOneClass.induced is a dubious translation:
-lean 3 declaration is
- forall {F : Type.{u1}} (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u3} S] [_inst_3 : NormOneClass.{u3} S (SeminormedRing.toHasNorm.{u3} S _inst_2) (AddMonoidWithOne.toOne.{u3} S (AddGroupWithOne.toAddMonoidWithOne.{u3} S (AddCommGroupWithOne.toAddGroupWithOne.{u3} S (Ring.toAddCommGroupWithOne.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))))] [_inst_4 : RingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toHasNorm.{u2} R (SeminormedRing.induced.{u1, u2, u3} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2))) _inst_4) f)) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R _inst_1))))
-but is expected to have type
- forall {F : Type.{u3}} (R : Type.{u2}) (S : Type.{u1}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u1} S] [_inst_3 : NormOneClass.{u1} S (SeminormedRing.toNorm.{u1} S _inst_2) (Semiring.toOne.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] [_inst_4 : RingHomClass.{u3, u2, u1} F R S (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toNorm.{u2} R (SeminormedRing.induced.{u3, u2, u1} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u3, u2, u1} F R S (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2))) _inst_4) f)) (Semiring.toOne.{u2} R (Ring.toSemiring.{u2} R _inst_1))
-Case conversion may be inaccurate. Consider using '#align norm_one_class.induced NormOneClass.inducedₓ'. -/
/-- A ring homomorphism from a `ring R` to a `semi_normed_ring S` which induces the norm structure
`semi_normed_ring.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -313,10 +313,8 @@ but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) (NonUnitalSeminormedRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) y))
Case conversion may be inaccurate. Consider using '#align mul_right_bound mulRight_boundₓ'. -/
/-- In a seminormed ring, the right-multiplication `add_monoid_hom` is bounded. -/
-theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y =>
- by
- rw [mul_comm]
- convert norm_mul_le y x
+theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y => by
+ rw [mul_comm]; convert norm_mul_le y x
#align mul_right_bound mulRight_bound
instance : NonUnitalSeminormedRing (ULift α) :=
@@ -709,8 +707,7 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
convert((continuous_fst.tendsto x).norm.mul
((continuous_snd.tendsto x).sub tendsto_const_nhds).norm).add
(((continuous_fst.tendsto x).sub tendsto_const_nhds).norm.mul _)
- show tendsto _ _ _
- exact tendsto_const_nhds
+ show tendsto _ _ _; exact tendsto_const_nhds
simp⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
@@ -907,9 +904,7 @@ but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Eq.{1} NNReal (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) z) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) w)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal (CanonicallyLinearOrderedSemifield.toDiv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)) (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) z) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) w))))
Case conversion may be inaccurate. Consider using '#align nndist_inv_inv₀ nndist_inv_inv₀ₓ'. -/
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
- nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) :=
- by
- rw [← NNReal.coe_eq]
+ nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by rw [← NNReal.coe_eq];
simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
#align nndist_inv_inv₀ nndist_inv_inv₀
@@ -1350,9 +1345,7 @@ instance : NormedField ℚ :=
instance : DenselyNormedField ℚ
where lt_norm_lt r₁ r₂ h₀ hr :=
let ⟨q, h⟩ := exists_rat_btwn hr
- ⟨q, by
- unfold norm
- rwa [abs_of_pos (h₀.trans_lt h.1)]⟩
+ ⟨q, by unfold norm; rwa [abs_of_pos (h₀.trans_lt h.1)]⟩
section RingHomIsometric
@@ -1394,9 +1387,7 @@ See note [reducible non-instances] -/
def NonUnitalSeminormedRing.induced [NonUnitalRing R] [NonUnitalSeminormedRing S]
[NonUnitalRingHomClass F R S] (f : F) : NonUnitalSeminormedRing R :=
{ SeminormedAddCommGroup.induced R S f with
- norm_mul := fun x y => by
- unfold norm
- exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
+ norm_mul := fun x y => by unfold norm; exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
#align non_unital_semi_normed_ring.induced NonUnitalSeminormedRing.induced
-/
@@ -1470,9 +1461,7 @@ See note [reducible non-instances] -/
def NormedDivisionRing.induced [DivisionRing R] [NormedDivisionRing S] [NonUnitalRingHomClass F R S]
(f : F) (hf : Function.Injective f) : NormedDivisionRing R :=
{ NormedAddCommGroup.induced R S f hf with
- norm_mul' := fun x y => by
- unfold norm
- exact (map_mul f x y).symm ▸ norm_mul (f x) (f y) }
+ norm_mul' := fun x y => by unfold norm; exact (map_mul f x y).symm ▸ norm_mul (f x) (f y) }
#align normed_division_ring.induced NormedDivisionRing.induced
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -917,7 +917,7 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5143 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5143 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5147 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5147) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -982,7 +982,7 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (fun (_x : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) => β -> α) (MonoidHom.hasCoeToFun.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) φ x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
Case conversion may be inaccurate. Consider using '#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_oneₓ'. -/
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -240,7 +240,7 @@ theorem norm_mul_le (a b : α) : ‖a * b‖ ≤ ‖a‖ * ‖b‖ :=
/- warning: nnnorm_mul_le -> nnnorm_mul_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
Case conversion may be inaccurate. Consider using '#align nnnorm_mul_le nnnorm_mul_leₓ'. -/
@@ -262,7 +262,7 @@ theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)
/- warning: one_le_nnnorm_one -> one_le_nnnorm_one is a dubious translation:
lean 3 declaration is
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
but is expected to have type
forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (Semiring.toOne.{u1} β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
Case conversion may be inaccurate. Consider using '#align one_le_nnnorm_one one_le_nnnorm_oneₓ'. -/
@@ -436,7 +436,7 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
/- warning: list.nnnorm_prod_le' -> List.nnnorm_prod_le' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le' List.nnnorm_prod_le'ₓ'. -/
@@ -458,7 +458,7 @@ theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤
/- warning: list.nnnorm_prod_le -> List.nnnorm_prod_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le List.nnnorm_prod_leₓ'. -/
@@ -482,7 +482,7 @@ theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (
/- warning: finset.nnnorm_prod_le' -> Finset.nnnorm_prod_le' is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'ₓ'. -/
@@ -506,7 +506,7 @@ theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α]
/- warning: finset.nnnorm_prod_le -> Finset.nnnorm_prod_le is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Semiring.toOne.{u2} α (CommSemiring.toSemiring.{u2} α (CommRing.toCommSemiring.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2)))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le Finset.nnnorm_prod_leₓ'. -/
@@ -517,7 +517,7 @@ theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α
/- warning: nnnorm_pow_le' -> nnnorm_pow_le' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le' nnnorm_pow_le'ₓ'. -/
@@ -532,7 +532,7 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
/- warning: nnnorm_pow_le -> nnnorm_pow_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toHasLe.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le nnnorm_pow_leₓ'. -/
@@ -650,7 +650,7 @@ theorem Units.norm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖ :=
/- warning: units.nnnorm_pos -> Units.nnnorm_pos is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
+ forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1))))), LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 0 (Zero.toOfNat0.{0} NNReal instNNRealZero)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) (Units.val.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1)))) x))
Case conversion may be inaccurate. Consider using '#align units.nnnorm_pos Units.nnnorm_posₓ'. -/
@@ -1172,11 +1172,15 @@ theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
-#print NormedField.exists_lt_nnnorm_lt /-
+/- warning: normed_field.exists_lt_nnnorm_lt -> NormedField.exists_lt_nnnorm_lt is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : NNReal} {r₂ : NNReal}, (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) r₁ (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x)) (LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x) r₂)))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : NNReal} {r₂ : NNReal}, (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) r₁ (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x)) (LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))) x) r₂)))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_ltₓ'. -/
theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
exact_mod_cast exists_lt_norm_lt α r₁.prop h
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
--/
/- warning: normed_field.densely_ordered_range_norm -> NormedField.denselyOrdered_range_norm is a dubious translation:
lean 3 declaration is
@@ -1192,7 +1196,12 @@ instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α →
⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
-#print NormedField.denselyOrdered_range_nnnorm /-
+/- warning: normed_field.densely_ordered_range_nnnorm -> NormedField.denselyOrdered_range_nnnorm is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (coeSort.{1, 2} (Set.{0} NNReal) Type (Set.hasCoeToSort.{0} NNReal) (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))) (Subtype.hasLt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (fun (x : NNReal) => Membership.Mem.{0, 0} NNReal (Set.{0} NNReal) (Set.hasMem.{0} NNReal) x (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (Set.Elem.{0} NNReal (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))) (Subtype.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (fun (x : NNReal) => Membership.mem.{0, 0} NNReal (Set.{0} NNReal) (Set.instMembershipSet.{0} NNReal) x (Set.range.{0, succ u1} NNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))))))))
+Case conversion may be inaccurate. Consider using '#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnormₓ'. -/
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -1200,7 +1209,6 @@ instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α
let ⟨z, h⟩ := exists_lt_nnnorm_lt α hxy
⟨⟨‖z‖₊, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
--/
/- warning: normed_field.dense_range_nnnorm -> NormedField.denseRange_nnnorm is a dubious translation:
lean 3 declaration is
@@ -1300,7 +1308,7 @@ theorem nnnorm_norm [SeminormedAddCommGroup α] (a : α) : ‖‖a‖‖₊ =
/- warning: normed_add_comm_group.tendsto_at_top -> NormedAddCommGroup.tendsto_atTop is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {β : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_3))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_3) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_3))))) (f n) b)) ε))))
+ forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {β : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_3))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_3) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_3))))) (f n) b)) ε))))
but is expected to have type
forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] {β : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_3))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_3) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_3))))) (f n) b)) ε))))
Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTopₓ'. -/
@@ -1313,7 +1321,7 @@ theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β :
/- warning: normed_add_comm_group.tendsto_at_top' -> NormedAddCommGroup.tendsto_atTop' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : NoMaxOrder.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] {β : Type.{u2}} [_inst_4 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_4))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_4))))) (f n) b)) ε))))
+ forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : NoMaxOrder.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] {β : Type.{u2}} [_inst_4 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_4))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_4))))) (f n) b)) ε))))
but is expected to have type
forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] [_inst_3 : NoMaxOrder.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2)))] {β : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_4))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_4) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_4))))) (f n) b)) ε))))
Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -917,7 +917,7 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5149 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5151 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5149 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5151) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5143 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5143 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5145) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/28b2a92f2996d28e580450863c130955de0ed398
@@ -917,7 +917,7 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5233) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5149 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5151 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5149 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5151) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -253,7 +253,7 @@ theorem nnnorm_mul_le (a b : α) : ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊ :=
lean 3 declaration is
forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
but is expected to have type
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (Semiring.toOne.{u1} β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
Case conversion may be inaccurate. Consider using '#align one_le_norm_one one_le_norm_oneₓ'. -/
theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖ :=
(le_mul_iff_one_le_left <| norm_pos_iff.mpr (one_ne_zero : (1 : β) ≠ 0)).mp
@@ -264,7 +264,7 @@ theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)
lean 3 declaration is
forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
but is expected to have type
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (Semiring.toOne.{u1} β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
Case conversion may be inaccurate. Consider using '#align one_le_nnnorm_one one_le_nnnorm_oneₓ'. -/
theorem one_le_nnnorm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖₊ :=
one_le_norm_one β
@@ -408,7 +408,7 @@ instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _}
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Real (HasLiftT.mk.{1, 1} Nat Real (CoeTCₓ.coe.{1, 1} Nat Real (Nat.castCoe.{0} Real Real.hasNatCast))) n) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Nat.cast.{u1} α (NonAssocRing.toNatCast.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Nat.cast.{0} Real Real.natCast n) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Nat.cast.{0} Real Real.natCast n) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align nat.norm_cast_le Nat.norm_cast_leₓ'. -/
theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
| 0 => by simp
@@ -421,7 +421,7 @@ theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l)))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l)))
Case conversion may be inaccurate. Consider using '#align list.norm_prod_le' List.norm_prod_le'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -438,7 +438,7 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le' List.nnnorm_prod_le'ₓ'. -/
theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
(List.norm_prod_le' hl).trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
@@ -448,7 +448,7 @@ theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l))
Case conversion may be inaccurate. Consider using '#align list.norm_prod_le List.norm_prod_leₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤ (l.map norm).Prod
@@ -460,7 +460,7 @@ theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le List.nnnorm_prod_leₓ'. -/
theorem List.nnnorm_prod_le [NormOneClass α] (l : List α) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
l.norm_prod_le.trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
@@ -495,7 +495,7 @@ theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι)
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Semiring.toOne.{u2} α (CommSemiring.toSemiring.{u2} α (CommRing.toCommSemiring.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2)))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le Finset.norm_prod_leₓ'. -/
theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
@@ -508,7 +508,7 @@ theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α]
lean 3 declaration is
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Semiring.toOne.{u2} α (CommSemiring.toSemiring.{u2} α (CommRing.toCommSemiring.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2)))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le Finset.nnnorm_prod_leₓ'. -/
theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
@@ -534,7 +534,7 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le nnnorm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖₊ = 1`, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n`.
See also `nnnorm_pow_le'`.-/
@@ -557,7 +557,7 @@ theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)
Case conversion may be inaccurate. Consider using '#align norm_pow_le norm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`. See also `norm_pow_le'`.-/
theorem norm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖ ≤ ‖a‖ ^ n :=
@@ -741,7 +741,7 @@ theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))
Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClassₓ'. -/
instance (priority := 900) NormedDivisionRing.to_normOneClass : NormOneClass α :=
⟨mul_left_cancel₀ (mt norm_eq_zero.1 (one_ne_zero' α)) <| by rw [← norm_mul, mul_one, mul_one]⟩
@@ -810,7 +810,7 @@ theorem nnnorm_pow (a : α) (n : ℕ) : ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) l))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) l))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) l))
Case conversion may be inaccurate. Consider using '#align list.norm_prod List.norm_prodₓ'. -/
protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Prod :=
(normHom.toMonoidHom : α →* ℝ).map_list_prod _
@@ -820,7 +820,7 @@ protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Pro
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod List.nnnorm_prodₓ'. -/
protected theorem List.nnnorm_prod (l : List α) : ‖l.Prod‖₊ = (l.map nnnorm).Prod :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_list_prod _
@@ -982,7 +982,7 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (fun (_x : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) => β -> α) (MonoidHom.hasCoeToFun.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) φ x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (Semiring.toNonAssocSemiring.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
Case conversion may be inaccurate. Consider using '#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_oneₓ'. -/
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
@@ -995,7 +995,7 @@ theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) x (PNat.val k)) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) x (PNat.val k)) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
Case conversion may be inaccurate. Consider using '#align norm_one_of_pow_eq_one norm_one_of_pow_eq_oneₓ'. -/
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
norm_map_one_of_pow_eq_one (MonoidHom.id α) h
@@ -1484,7 +1484,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
lean 3 declaration is
forall {F : Type.{u1}} (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u3} S] [_inst_3 : NormOneClass.{u3} S (SeminormedRing.toHasNorm.{u3} S _inst_2) (AddMonoidWithOne.toOne.{u3} S (AddGroupWithOne.toAddMonoidWithOne.{u3} S (AddCommGroupWithOne.toAddGroupWithOne.{u3} S (Ring.toAddCommGroupWithOne.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))))] [_inst_4 : RingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toHasNorm.{u2} R (SeminormedRing.induced.{u1, u2, u3} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2))) _inst_4) f)) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R _inst_1))))
but is expected to have type
- forall {F : Type.{u3}} (R : Type.{u2}) (S : Type.{u1}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u1} S] [_inst_3 : NormOneClass.{u1} S (SeminormedRing.toNorm.{u1} S _inst_2) (NonAssocRing.toOne.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] [_inst_4 : RingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toNorm.{u2} R (SeminormedRing.induced.{u3, u2, u1} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2))) _inst_4) f)) (NonAssocRing.toOne.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1))
+ forall {F : Type.{u3}} (R : Type.{u2}) (S : Type.{u1}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u1} S] [_inst_3 : NormOneClass.{u1} S (SeminormedRing.toNorm.{u1} S _inst_2) (Semiring.toOne.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] [_inst_4 : RingHomClass.{u3, u2, u1} F R S (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toNorm.{u2} R (SeminormedRing.induced.{u3, u2, u1} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u3, u2, u1} F R S (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)) (Semiring.toNonAssocSemiring.{u1} S (Ring.toSemiring.{u1} S (SeminormedRing.toRing.{u1} S _inst_2))) _inst_4) f)) (Semiring.toOne.{u2} R (Ring.toSemiring.{u2} R _inst_1))
Case conversion may be inaccurate. Consider using '#align norm_one_class.induced NormOneClass.inducedₓ'. -/
/-- A ring homomorphism from a `ring R` to a `semi_normed_ring S` which induces the norm structure
`semi_normed_ring.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/347636a7a80595d55bedf6e6fbd996a3c39da69a
@@ -380,7 +380,7 @@ variable [SeminormedRing α]
lean 3 declaration is
forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
but is expected to have type
- forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
+ forall {𝕜 : Type.{u1}} [_x : CommRing.{u1} 𝕜] {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] [_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))] (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
Case conversion may be inaccurate. Consider using '#align subalgebra.semi_normed_ring Subalgebra.seminormedRingₓ'. -/
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
@@ -394,7 +394,7 @@ instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type
lean 3 declaration is
forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
but is expected to have type
- forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
+ forall {𝕜 : Type.{u1}} [_x : CommRing.{u1} 𝕜] {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] [_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))] (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
Case conversion may be inaccurate. Consider using '#align subalgebra.normed_ring Subalgebra.normedRingₓ'. -/
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
@@ -917,7 +917,7 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5225 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5227 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5225 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5227) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5233 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5233) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -251,7 +251,7 @@ theorem nnnorm_mul_le (a b : α) : ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊ :=
/- warning: one_le_norm_one -> one_le_norm_one is a dubious translation:
lean 3 declaration is
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (NonAssocRing.toAddGroupWithOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
but is expected to have type
forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
Case conversion may be inaccurate. Consider using '#align one_le_norm_one one_le_norm_oneₓ'. -/
@@ -262,7 +262,7 @@ theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)
/- warning: one_le_nnnorm_one -> one_le_nnnorm_one is a dubious translation:
lean 3 declaration is
- forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (NonAssocRing.toAddGroupWithOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (AddCommGroupWithOne.toAddGroupWithOne.{u1} β (Ring.toAddCommGroupWithOne.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
but is expected to have type
forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
Case conversion may be inaccurate. Consider using '#align one_le_nnnorm_one one_le_nnnorm_oneₓ'. -/
@@ -406,7 +406,7 @@ instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _}
/- warning: nat.norm_cast_le -> Nat.norm_cast_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Real (HasLiftT.mk.{1, 1} Nat Real (CoeTCₓ.coe.{1, 1} Nat Real (Nat.castCoe.{0} Real Real.hasNatCast))) n) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))))))))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Real (HasLiftT.mk.{1, 1} Nat Real (CoeTCₓ.coe.{1, 1} Nat Real (Nat.castCoe.{0} Real Real.hasNatCast))) n) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Nat.cast.{u1} α (NonAssocRing.toNatCast.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Nat.cast.{0} Real Real.natCast n) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align nat.norm_cast_le Nat.norm_cast_leₓ'. -/
@@ -419,7 +419,7 @@ theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
/- warning: list.norm_prod_le' -> List.norm_prod_le' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l)))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l)))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l)))
Case conversion may be inaccurate. Consider using '#align list.norm_prod_le' List.norm_prod_le'ₓ'. -/
@@ -436,7 +436,7 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
/- warning: list.nnnorm_prod_le' -> List.nnnorm_prod_le' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le' List.nnnorm_prod_le'ₓ'. -/
@@ -446,7 +446,7 @@ theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤
/- warning: list.norm_prod_le -> List.norm_prod_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l))
Case conversion may be inaccurate. Consider using '#align list.norm_prod_le List.norm_prod_leₓ'. -/
@@ -458,7 +458,7 @@ theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤
/- warning: list.nnnorm_prod_le -> List.nnnorm_prod_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le List.nnnorm_prod_leₓ'. -/
@@ -493,7 +493,7 @@ theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι)
/- warning: finset.norm_prod_le -> Finset.norm_prod_le is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (NonAssocRing.toAddGroupWithOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le Finset.norm_prod_leₓ'. -/
@@ -506,7 +506,7 @@ theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α]
/- warning: finset.nnnorm_prod_le -> Finset.nnnorm_prod_le is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (NonAssocRing.toAddGroupWithOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (AddCommGroupWithOne.toAddGroupWithOne.{u2} α (Ring.toAddCommGroupWithOne.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le Finset.nnnorm_prod_leₓ'. -/
@@ -532,7 +532,7 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
/- warning: nnnorm_pow_le -> nnnorm_pow_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le nnnorm_pow_leₓ'. -/
@@ -555,7 +555,7 @@ theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^
/- warning: norm_pow_le -> norm_pow_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)
Case conversion may be inaccurate. Consider using '#align norm_pow_le norm_pow_leₓ'. -/
@@ -739,7 +739,7 @@ theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
/- warning: normed_division_ring.to_norm_one_class -> NormedDivisionRing.to_normOneClass is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))
Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClassₓ'. -/
@@ -808,7 +808,7 @@ theorem nnnorm_pow (a : α) (n : ℕ) : ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
/- warning: list.norm_prod -> List.norm_prod is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) l))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) l))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) l))
Case conversion may be inaccurate. Consider using '#align list.norm_prod List.norm_prodₓ'. -/
@@ -818,7 +818,7 @@ protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Pro
/- warning: list.nnnorm_prod -> List.nnnorm_prod is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod List.nnnorm_prodₓ'. -/
@@ -993,7 +993,7 @@ theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k :
/- warning: norm_one_of_pow_eq_one -> norm_one_of_pow_eq_one is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) x (PNat.val k)) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
Case conversion may be inaccurate. Consider using '#align norm_one_of_pow_eq_one norm_one_of_pow_eq_oneₓ'. -/
@@ -1482,7 +1482,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
/- warning: norm_one_class.induced -> NormOneClass.induced is a dubious translation:
lean 3 declaration is
- forall {F : Type.{u1}} (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u3} S] [_inst_3 : NormOneClass.{u3} S (SeminormedRing.toHasNorm.{u3} S _inst_2) (AddMonoidWithOne.toOne.{u3} S (AddGroupWithOne.toAddMonoidWithOne.{u3} S (NonAssocRing.toAddGroupWithOne.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))))] [_inst_4 : RingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toHasNorm.{u2} R (SeminormedRing.induced.{u1, u2, u3} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2))) _inst_4) f)) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1))))
+ forall {F : Type.{u1}} (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u3} S] [_inst_3 : NormOneClass.{u3} S (SeminormedRing.toHasNorm.{u3} S _inst_2) (AddMonoidWithOne.toOne.{u3} S (AddGroupWithOne.toAddMonoidWithOne.{u3} S (AddCommGroupWithOne.toAddGroupWithOne.{u3} S (Ring.toAddCommGroupWithOne.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))))] [_inst_4 : RingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toHasNorm.{u2} R (SeminormedRing.induced.{u1, u2, u3} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2))) _inst_4) f)) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R _inst_1))))
but is expected to have type
forall {F : Type.{u3}} (R : Type.{u2}) (S : Type.{u1}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u1} S] [_inst_3 : NormOneClass.{u1} S (SeminormedRing.toNorm.{u1} S _inst_2) (NonAssocRing.toOne.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] [_inst_4 : RingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toNorm.{u2} R (SeminormedRing.induced.{u3, u2, u1} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2))) _inst_4) f)) (NonAssocRing.toOne.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1))
Case conversion may be inaccurate. Consider using '#align norm_one_class.induced NormOneClass.inducedₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -260,11 +260,15 @@ theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)
(by simpa only [mul_one] using norm_mul_le (1 : β) 1)
#align one_le_norm_one one_le_norm_one
-#print one_le_nnnorm_one /-
+/- warning: one_le_nnnorm_one -> one_le_nnnorm_one is a dubious translation:
+lean 3 declaration is
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 1 (OfNat.mk.{0} NNReal 1 (One.one.{0} NNReal (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (NonAssocRing.toAddGroupWithOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
+but is expected to have type
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 1 (One.toOfNat1.{0} NNReal instNNRealOne)) (NNNorm.nnnorm.{u1} β (SeminormedAddGroup.toNNNorm.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} β (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} β (NormedRing.toNonUnitalNormedRing.{u1} β _inst_2))))) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align one_le_nnnorm_one one_le_nnnorm_oneₓ'. -/
theorem one_le_nnnorm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖₊ :=
one_le_norm_one β
#align one_le_nnnorm_one one_le_nnnorm_one
--/
/- warning: filter.tendsto.zero_mul_is_bounded_under_le -> Filter.Tendsto.zero_mul_isBoundedUnder_le is a dubious translation:
lean 3 declaration is
@@ -733,11 +737,15 @@ theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
NormedDivisionRing.norm_mul' a b
#align norm_mul norm_mul
-#print NormedDivisionRing.to_normOneClass /-
+/- warning: normed_division_ring.to_norm_one_class -> NormedDivisionRing.to_normOneClass is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], NormOneClass.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))
+Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClassₓ'. -/
instance (priority := 900) NormedDivisionRing.to_normOneClass : NormOneClass α :=
⟨mul_left_cancel₀ (mt norm_eq_zero.1 (one_ne_zero' α)) <| by rw [← norm_mul, mul_one, mul_one]⟩
#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClass
--/
#print isAbsoluteValue_norm /-
instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -702,8 +702,7 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
refine' squeeze_zero (fun e => norm_nonneg _) this _
- convert
- ((continuous_fst.tendsto x).norm.mul
+ convert((continuous_fst.tendsto x).norm.mul
((continuous_snd.tendsto x).sub tendsto_const_nhds).norm).add
(((continuous_fst.tendsto x).sub tendsto_const_nhds).norm.mul _)
show tendsto _ _ _
@@ -910,7 +909,7 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5229 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5229 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5225 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5227 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5225 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5227) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
! This file was ported from Lean 3 source module analysis.normed.field.basic
-! leanprover-community/mathlib commit f06058e64b7e8397234455038f3f8aec83aaba5a
+! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Topology.Instances.Ennreal
/-!
# Normed fields
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we define (semi)normed rings and fields. We also prove some theorems about these
definitions.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/2af0836443b4cfb5feda0df0051acdb398304931
@@ -26,193 +26,285 @@ open Filter Metric
open Topology BigOperators NNReal ENNReal uniformity Pointwise
+#print NonUnitalSeminormedRing /-
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NonUnitalSemiNormedRing (α : Type _) extends Norm α, NonUnitalRing α,
+class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
-#align non_unital_semi_normed_ring NonUnitalSemiNormedRing
+#align non_unital_semi_normed_ring NonUnitalSeminormedRing
+-/
+#print SeminormedRing /-
/-- A seminormed ring is a ring endowed with a seminorm which satisfies the inequality
`‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class SemiNormedRing (α : Type _) extends Norm α, Ring α, PseudoMetricSpace α where
+class SeminormedRing (α : Type _) extends Norm α, Ring α, PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
-#align semi_normed_ring SemiNormedRing
+#align semi_normed_ring SeminormedRing
+-/
+#print SeminormedRing.toNonUnitalSeminormedRing /-
-- see Note [lower instance priority]
/-- A seminormed ring is a non-unital seminormed ring. -/
-instance (priority := 100) SemiNormedRing.toNonUnitalSemiNormedRing [β : SemiNormedRing α] :
- NonUnitalSemiNormedRing α :=
+instance (priority := 100) SeminormedRing.toNonUnitalSeminormedRing [β : SeminormedRing α] :
+ NonUnitalSeminormedRing α :=
{ β with }
-#align semi_normed_ring.to_non_unital_semi_normed_ring SemiNormedRing.toNonUnitalSemiNormedRing
+#align semi_normed_ring.to_non_unital_semi_normed_ring SeminormedRing.toNonUnitalSeminormedRing
+-/
+#print NonUnitalNormedRing /-
/-- A non-unital normed ring is a not-necessarily-unital ring
endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NonUnitalNormedRing (α : Type _) extends Norm α, NonUnitalRing α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align non_unital_normed_ring NonUnitalNormedRing
+-/
+#print NonUnitalNormedRing.toNonUnitalSeminormedRing /-
-- see Note [lower instance priority]
/-- A non-unital normed ring is a non-unital seminormed ring. -/
-instance (priority := 100) NonUnitalNormedRing.toNonUnitalSemiNormedRing
- [β : NonUnitalNormedRing α] : NonUnitalSemiNormedRing α :=
+instance (priority := 100) NonUnitalNormedRing.toNonUnitalSeminormedRing
+ [β : NonUnitalNormedRing α] : NonUnitalSeminormedRing α :=
{ β with }
-#align non_unital_normed_ring.to_non_unital_semi_normed_ring NonUnitalNormedRing.toNonUnitalSemiNormedRing
+#align non_unital_normed_ring.to_non_unital_semi_normed_ring NonUnitalNormedRing.toNonUnitalSeminormedRing
+-/
+#print NormedRing /-
/-- A normed ring is a ring endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NormedRing (α : Type _) extends Norm α, Ring α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align normed_ring NormedRing
+-/
+#print NormedDivisionRing /-
/-- A normed division ring is a division ring endowed with a seminorm which satisfies the equality
`‖x y‖ = ‖x‖ ‖y‖`. -/
class NormedDivisionRing (α : Type _) extends Norm α, DivisionRing α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul' : ∀ a b, norm (a * b) = norm a * norm b
#align normed_division_ring NormedDivisionRing
+-/
+#print NormedDivisionRing.toNormedRing /-
-- see Note [lower instance priority]
/-- A normed division ring is a normed ring. -/
instance (priority := 100) NormedDivisionRing.toNormedRing [β : NormedDivisionRing α] :
NormedRing α :=
{ β with norm_mul := fun a b => (NormedDivisionRing.norm_mul' a b).le }
#align normed_division_ring.to_normed_ring NormedDivisionRing.toNormedRing
+-/
+#print NormedRing.toSeminormedRing /-
-- see Note [lower instance priority]
/-- A normed ring is a seminormed ring. -/
-instance (priority := 100) NormedRing.toSemiNormedRing [β : NormedRing α] : SemiNormedRing α :=
+instance (priority := 100) NormedRing.toSeminormedRing [β : NormedRing α] : SeminormedRing α :=
{ β with }
-#align normed_ring.to_semi_normed_ring NormedRing.toSemiNormedRing
+#align normed_ring.to_semi_normed_ring NormedRing.toSeminormedRing
+-/
+#print NormedRing.toNonUnitalNormedRing /-
-- see Note [lower instance priority]
/-- A normed ring is a non-unital normed ring. -/
instance (priority := 100) NormedRing.toNonUnitalNormedRing [β : NormedRing α] :
NonUnitalNormedRing α :=
{ β with }
#align normed_ring.to_non_unital_normed_ring NormedRing.toNonUnitalNormedRing
+-/
+#print SeminormedCommRing /-
/-- A seminormed commutative ring is a commutative ring endowed with a seminorm which satisfies
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class SemiNormedCommRing (α : Type _) extends SemiNormedRing α where
+class SeminormedCommRing (α : Type _) extends SeminormedRing α where
mul_comm : ∀ x y : α, x * y = y * x
-#align semi_normed_comm_ring SemiNormedCommRing
+#align semi_normed_comm_ring SeminormedCommRing
+-/
+#print NormedCommRing /-
/-- A normed commutative ring is a commutative ring endowed with a norm which satisfies
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class NormedCommRing (α : Type _) extends NormedRing α where
mul_comm : ∀ x y : α, x * y = y * x
#align normed_comm_ring NormedCommRing
+-/
+#print NormedCommRing.toSeminormedCommRing /-
-- see Note [lower instance priority]
/-- A normed commutative ring is a seminormed commutative ring. -/
-instance (priority := 100) NormedCommRing.toSemiNormedCommRing [β : NormedCommRing α] :
- SemiNormedCommRing α :=
+instance (priority := 100) NormedCommRing.toSeminormedCommRing [β : NormedCommRing α] :
+ SeminormedCommRing α :=
{ β with }
-#align normed_comm_ring.to_semi_normed_comm_ring NormedCommRing.toSemiNormedCommRing
+#align normed_comm_ring.to_semi_normed_comm_ring NormedCommRing.toSeminormedCommRing
+-/
instance : NormedCommRing PUnit :=
{ PUnit.normedAddCommGroup, PUnit.commRing with norm_mul := fun _ _ => by simp }
+#print NormOneClass /-
/-- A mixin class with the axiom `‖1‖ = 1`. Many `normed_ring`s and all `normed_field`s satisfy this
axiom. -/
class NormOneClass (α : Type _) [Norm α] [One α] : Prop where
norm_one : ‖(1 : α)‖ = 1
#align norm_one_class NormOneClass
+-/
export NormOneClass (norm_one)
attribute [simp] norm_one
+#print nnnorm_one /-
@[simp]
theorem nnnorm_one [SeminormedAddCommGroup α] [One α] [NormOneClass α] : ‖(1 : α)‖₊ = 1 :=
NNReal.eq norm_one
#align nnnorm_one nnnorm_one
+-/
+#print NormOneClass.nontrivial /-
theorem NormOneClass.nontrivial (α : Type _) [SeminormedAddCommGroup α] [One α] [NormOneClass α] :
Nontrivial α :=
nontrivial_of_ne 0 1 <| ne_of_apply_ne norm <| by simp
#align norm_one_class.nontrivial NormOneClass.nontrivial
+-/
+#print SeminormedCommRing.toCommRing /-
-- see Note [lower instance priority]
-instance (priority := 100) SemiNormedCommRing.toCommRing [β : SemiNormedCommRing α] : CommRing α :=
+instance (priority := 100) SeminormedCommRing.toCommRing [β : SeminormedCommRing α] : CommRing α :=
{ β with }
-#align semi_normed_comm_ring.to_comm_ring SemiNormedCommRing.toCommRing
+#align semi_normed_comm_ring.to_comm_ring SeminormedCommRing.toCommRing
+-/
+#print NonUnitalNormedRing.toNormedAddCommGroup /-
-- see Note [lower instance priority]
instance (priority := 100) NonUnitalNormedRing.toNormedAddCommGroup [β : NonUnitalNormedRing α] :
NormedAddCommGroup α :=
{ β with }
#align non_unital_normed_ring.to_normed_add_comm_group NonUnitalNormedRing.toNormedAddCommGroup
+-/
+#print NonUnitalSeminormedRing.toSeminormedAddCommGroup /-
-- see Note [lower instance priority]
-instance (priority := 100) NonUnitalSemiNormedRing.toSeminormedAddCommGroup
- [NonUnitalSemiNormedRing α] : SeminormedAddCommGroup α :=
- { ‹NonUnitalSemiNormedRing α› with }
-#align non_unital_semi_normed_ring.to_seminormed_add_comm_group NonUnitalSemiNormedRing.toSeminormedAddCommGroup
+instance (priority := 100) NonUnitalSeminormedRing.toSeminormedAddCommGroup
+ [NonUnitalSeminormedRing α] : SeminormedAddCommGroup α :=
+ { ‹NonUnitalSeminormedRing α› with }
+#align non_unital_semi_normed_ring.to_seminormed_add_comm_group NonUnitalSeminormedRing.toSeminormedAddCommGroup
+-/
instance [SeminormedAddCommGroup α] [One α] [NormOneClass α] : NormOneClass (ULift α) :=
⟨by simp [ULift.norm_def]⟩
+/- warning: prod.norm_one_class -> Prod.normOneClass is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} α] [_inst_2 : One.{u1} α] [_inst_3 : NormOneClass.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) _inst_2] [_inst_4 : SeminormedAddCommGroup.{u2} β] [_inst_5 : One.{u2} β] [_inst_6 : NormOneClass.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) _inst_5], NormOneClass.{max u1 u2} (Prod.{u1, u2} α β) (Prod.hasNorm.{u1, u2} α β (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4)) (Prod.hasOne.{u1, u2} α β _inst_2 _inst_5)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : SeminormedAddCommGroup.{u1} α] [_inst_2 : One.{u1} α] [_inst_3 : NormOneClass.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) _inst_2] [_inst_4 : SeminormedAddCommGroup.{u2} β] [_inst_5 : One.{u2} β] [_inst_6 : NormOneClass.{u2} β (SeminormedAddCommGroup.toNorm.{u2} β _inst_4) _inst_5], NormOneClass.{max u2 u1} (Prod.{u1, u2} α β) (Prod.toNorm.{u1, u2} α β (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) (SeminormedAddCommGroup.toNorm.{u2} β _inst_4)) (Prod.instOneProd.{u1, u2} α β _inst_2 _inst_5)
+Case conversion may be inaccurate. Consider using '#align prod.norm_one_class Prod.normOneClassₓ'. -/
instance Prod.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α]
[SeminormedAddCommGroup β] [One β] [NormOneClass β] : NormOneClass (α × β) :=
⟨by simp [Prod.norm_def]⟩
#align prod.norm_one_class Prod.normOneClass
+#print Pi.normOneClass /-
instance Pi.normOneClass {ι : Type _} {α : ι → Type _} [Nonempty ι] [Fintype ι]
[∀ i, SeminormedAddCommGroup (α i)] [∀ i, One (α i)] [∀ i, NormOneClass (α i)] :
NormOneClass (∀ i, α i) :=
⟨by simp [Pi.norm_def, Finset.sup_const Finset.univ_nonempty]⟩
#align pi.norm_one_class Pi.normOneClass
+-/
+#print MulOpposite.normOneClass /-
instance MulOpposite.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α] :
NormOneClass αᵐᵒᵖ :=
⟨@norm_one α _ _ _⟩
#align mul_opposite.norm_one_class MulOpposite.normOneClass
+-/
-section NonUnitalSemiNormedRing
+section NonUnitalSeminormedRing
-variable [NonUnitalSemiNormedRing α]
+variable [NonUnitalSeminormedRing α]
+/- warning: norm_mul_le -> norm_mul_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) b))
+Case conversion may be inaccurate. Consider using '#align norm_mul_le norm_mul_leₓ'. -/
theorem norm_mul_le (a b : α) : ‖a * b‖ ≤ ‖a‖ * ‖b‖ :=
- NonUnitalSemiNormedRing.norm_mul _ _
+ NonUnitalSeminormedRing.norm_mul _ _
#align norm_mul_le norm_mul_le
+/- warning: nnnorm_mul_le -> nnnorm_mul_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (a : α) (b : α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α _inst_1))) b))
+Case conversion may be inaccurate. Consider using '#align nnnorm_mul_le nnnorm_mul_leₓ'. -/
theorem nnnorm_mul_le (a b : α) : ‖a * b‖₊ ≤ ‖a‖₊ * ‖b‖₊ := by
simpa only [← norm_toNNReal, ← Real.toNNReal_mul (norm_nonneg _)] using
Real.toNNReal_mono (norm_mul_le _ _)
#align nnnorm_mul_le nnnorm_mul_le
+/- warning: one_le_norm_one -> one_le_norm_one is a dubious translation:
+lean 3 declaration is
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (OfNat.mk.{u1} β 1 (One.one.{u1} β (AddMonoidWithOne.toOne.{u1} β (AddGroupWithOne.toAddMonoidWithOne.{u1} β (NonAssocRing.toAddGroupWithOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2)))))))))
+but is expected to have type
+ forall (β : Type.{u1}) [_inst_2 : NormedRing.{u1} β] [_inst_3 : Nontrivial.{u1} β], LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_2) (OfNat.ofNat.{u1} β 1 (One.toOfNat1.{u1} β (NonAssocRing.toOne.{u1} β (Ring.toNonAssocRing.{u1} β (NormedRing.toRing.{u1} β _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align one_le_norm_one one_le_norm_oneₓ'. -/
theorem one_le_norm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖ :=
(le_mul_iff_one_le_left <| norm_pos_iff.mpr (one_ne_zero : (1 : β) ≠ 0)).mp
(by simpa only [mul_one] using norm_mul_le (1 : β) 1)
#align one_le_norm_one one_le_norm_one
+#print one_le_nnnorm_one /-
theorem one_le_nnnorm_one (β) [NormedRing β] [Nontrivial β] : 1 ≤ ‖(1 : β)‖₊ :=
one_le_norm_one β
#align one_le_nnnorm_one one_le_nnnorm_one
+-/
+/- warning: filter.tendsto.zero_mul_is_bounded_under_le -> Filter.Tendsto.zero_mul_isBoundedUnder_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.Tendsto.{u2, u1} ι α f l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))))) -> (Filter.IsBoundedUnder.{0, u2} Real ι (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1)) g)) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))))
+but is expected to have type
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.Tendsto.{u2, u1} ι α f l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))) -> (Filter.IsBoundedUnder.{0, u2} Real ι (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1131 : Real) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1133 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1131 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1133) l (Function.comp.{succ u2, succ u1, 1} ι α Real (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1152 : α) => Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1152) g)) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_leₓ'. -/
theorem Filter.Tendsto.zero_mul_isBoundedUnder_le {f g : ι → α} {l : Filter ι}
(hf : Tendsto f l (𝓝 0)) (hg : IsBoundedUnder (· ≤ ·) l (norm ∘ g)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hf.op_zero_isBoundedUnder_le hg (· * ·) norm_mul_le
#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_le
-theorem Filter.IsBoundedUnderLe.mul_tendsto_zero {f g : ι → α} {l : Filter ι}
+/- warning: filter.is_bounded_under_le.mul_tendsto_zero -> Filter.isBoundedUnder_le_mul_tendsto_zero is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.IsBoundedUnder.{0, u2} Real ι (LE.le.{0} Real Real.hasLe) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1)) f)) -> (Filter.Tendsto.{u2, u1} ι α g l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))))) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))))
+but is expected to have type
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] {f : ι -> α} {g : ι -> α} {l : Filter.{u2} ι}, (Filter.IsBoundedUnder.{0, u2} Real ι (fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1225 : Real) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1227 : Real) => LE.le.{0} Real Real.instLEReal x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1225 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.1227) l (Function.comp.{succ u2, succ u1, 1} ι α Real (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1)) f)) -> (Filter.Tendsto.{u2, u1} ι α g l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u2, u1} ι α (fun (x : ι) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))) (f x) (g x)) l (nhds.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (SemigroupWithZero.toZero.{u1} α (NonUnitalSemiring.toSemigroupWithZero.{u1} α (NonUnitalRing.toNonUnitalSemiring.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zeroₓ'. -/
+theorem Filter.isBoundedUnder_le_mul_tendsto_zero {f g : ι → α} {l : Filter ι}
(hf : IsBoundedUnder (· ≤ ·) l (norm ∘ f)) (hg : Tendsto g l (𝓝 0)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hg.op_zero_isBoundedUnder_le hf (flip (· * ·)) fun x y =>
(norm_mul_le y x).trans_eq (mul_comm _ _)
-#align filter.is_bounded_under_le.mul_tendsto_zero Filter.IsBoundedUnderLe.mul_tendsto_zero
-
+#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zero
+
+/- warning: mul_left_bound -> mulLeft_bound is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) y))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) (NonUnitalSeminormedRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))) (AddMonoidHom.mulLeft.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) y))
+Case conversion may be inaccurate. Consider using '#align mul_left_bound mulLeft_boundₓ'. -/
/-- In a seminormed ring, the left-multiplication `add_monoid_hom` is bounded. -/
theorem mulLeft_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulLeft x y‖ ≤ ‖x‖ * ‖y‖ :=
norm_mul_le x
#align mul_left_bound mulLeft_bound
+/- warning: mul_right_bound -> mulRight_bound is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (fun (_x : AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) => α -> α) (AddMonoidHom.hasCoeToFun.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toHasNorm.{u1} α _inst_1) y))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α] (x : α) (y : α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) (NonUnitalSeminormedRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) y) _inst_1) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => α) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddZeroClass.toAdd.{u1} α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))) α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoidHom.addMonoidHomClass.{u1, u1} α α (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))) (AddMonoid.toAddZeroClass.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))))))))) (AddMonoidHom.mulRight.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1))) x) y)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) x) (Norm.norm.{u1} α (NonUnitalSeminormedRing.toNorm.{u1} α _inst_1) y))
+Case conversion may be inaccurate. Consider using '#align mul_right_bound mulRight_boundₓ'. -/
/-- In a seminormed ring, the right-multiplication `add_monoid_hom` is bounded. -/
theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y =>
by
@@ -220,13 +312,14 @@ theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖
convert norm_mul_le y x
#align mul_right_bound mulRight_bound
-instance : NonUnitalSemiNormedRing (ULift α) :=
+instance : NonUnitalSeminormedRing (ULift α) :=
{ ULift.seminormedAddCommGroup with norm_mul := fun x y => (norm_mul_le x.down y.down : _) }
+#print Prod.nonUnitalSeminormedRing /-
/-- Non-unital seminormed ring structure on the product of two non-unital seminormed rings,
using the sup norm. -/
-instance Prod.nonUnitalSemiNormedRing [NonUnitalSemiNormedRing β] :
- NonUnitalSemiNormedRing (α × β) :=
+instance Prod.nonUnitalSeminormedRing [NonUnitalSeminormedRing β] :
+ NonUnitalSeminormedRing (α × β) :=
{ Prod.seminormedAddCommGroup with
norm_mul := fun x y =>
calc
@@ -240,12 +333,14 @@ instance Prod.nonUnitalSemiNormedRing [NonUnitalSemiNormedRing β] :
_ = max ‖x.1‖ ‖x.2‖ * max ‖y.1‖ ‖y.2‖ := by simp [max_comm]
_ = ‖x‖ * ‖y‖ := rfl
}
-#align prod.non_unital_semi_normed_ring Prod.nonUnitalSemiNormedRing
+#align prod.non_unital_semi_normed_ring Prod.nonUnitalSeminormedRing
+-/
+#print Pi.nonUnitalSeminormedRing /-
/-- Non-unital seminormed ring structure on the product of finitely many non-unital seminormed
rings, using the sup norm. -/
-instance Pi.nonUnitalSemiNormedRing {π : ι → Type _} [Fintype ι]
- [∀ i, NonUnitalSemiNormedRing (π i)] : NonUnitalSemiNormedRing (∀ i, π i) :=
+instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
+ [∀ i, NonUnitalSeminormedRing (π i)] : NonUnitalSeminormedRing (∀ i, π i) :=
{ Pi.seminormedAddCommGroup with
norm_mul := fun x y =>
NNReal.coe_mono <|
@@ -256,37 +351,58 @@ instance Pi.nonUnitalSemiNormedRing {π : ι → Type _} [Fintype ι]
_ ≤ (Finset.univ.sup fun i => ‖x i‖₊) * Finset.univ.sup fun i => ‖y i‖₊ :=
Finset.sup_mul_le_mul_sup_of_nonneg _ (fun i _ => zero_le _) fun i _ => zero_le _
}
-#align pi.non_unital_semi_normed_ring Pi.nonUnitalSemiNormedRing
+#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
+-/
-instance MulOpposite.nonUnitalSemiNormedRing : NonUnitalSemiNormedRing αᵐᵒᵖ :=
+#print MulOpposite.nonUnitalSeminormedRing /-
+instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
{ MulOpposite.seminormedAddCommGroup with
norm_mul :=
MulOpposite.rec' fun x =>
MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
-#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSemiNormedRing
+#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSeminormedRing
+-/
-end NonUnitalSemiNormedRing
+end NonUnitalSeminormedRing
-section SemiNormedRing
+section SeminormedRing
-variable [SemiNormedRing α]
+variable [SeminormedRing α]
+/- warning: subalgebra.semi_normed_ring -> Subalgebra.seminormedRing is a dubious translation:
+lean 3 declaration is
+ forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
+but is expected to have type
+ forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : SeminormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1), SeminormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (SeminormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
+Case conversion may be inaccurate. Consider using '#align subalgebra.semi_normed_ring Subalgebra.seminormedRingₓ'. -/
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
-instance Subalgebra.semiNormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [SemiNormedRing E]
- {_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : SemiNormedRing s :=
+instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [SeminormedRing E]
+ {_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : SeminormedRing s :=
{ s.toSubmodule.SeminormedAddCommGroup with norm_mul := fun a b => norm_mul_le a.1 b.1 }
-#align subalgebra.semi_normed_ring Subalgebra.semiNormedRing
-
+#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
+
+/- warning: subalgebra.normed_ring -> Subalgebra.normedRing is a dubious translation:
+lean 3 declaration is
+ forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.setLike.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) s)
+but is expected to have type
+ forall {𝕜 : Type.{u1}} {_x : CommRing.{u1} 𝕜} {E : Type.{u2}} [_inst_2 : NormedRing.{u2} E] {_x_1 : Algebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2))} (s : Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1), NormedRing.{u2} (Subtype.{succ u2} E (fun (x : E) => Membership.mem.{u2, u2} E (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) (SetLike.instMembership.{u2, u2} (Subalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1) E (Subalgebra.instSetLikeSubalgebra.{u1, u2} 𝕜 E (CommRing.toCommSemiring.{u1} 𝕜 _x) (Ring.toSemiring.{u2} E (NormedRing.toRing.{u2} E _inst_2)) _x_1)) x s))
+Case conversion may be inaccurate. Consider using '#align subalgebra.normed_ring Subalgebra.normedRingₓ'. -/
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [NormedRing E]
{_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : NormedRing s :=
- { s.SemiNormedRing with }
+ { s.SeminormedRing with }
#align subalgebra.normed_ring Subalgebra.normedRing
+/- warning: nat.norm_cast_le -> Nat.norm_cast_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Real (HasLiftT.mk.{1, 1} Nat Real (CoeTCₓ.coe.{1, 1} Nat Real (Nat.castCoe.{0} Real Real.hasNatCast))) n) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))))))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (Nat.cast.{u1} α (NonAssocRing.toNatCast.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) n)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Nat.cast.{0} Real Real.natCast n) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align nat.norm_cast_le Nat.norm_cast_leₓ'. -/
theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
| 0 => by simp
| n + 1 => by
@@ -294,6 +410,12 @@ theorem Nat.norm_cast_le : ∀ n : ℕ, ‖(n : α)‖ ≤ n * ‖(1 : α)‖
exact norm_add_le_of_le (Nat.norm_cast_le n) le_rfl
#align nat.norm_cast_le Nat.norm_cast_le
+/- warning: list.norm_prod_le' -> List.norm_prod_le' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l)))
+Case conversion may be inaccurate. Consider using '#align list.norm_prod_le' List.norm_prod_le'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l.map norm).Prod
@@ -305,20 +427,44 @@ theorem List.norm_prod_le' : ∀ {l : List α}, l ≠ [] → ‖l.Prod‖ ≤ (l
exact List.norm_prod_le' (List.cons_ne_nil b l)
#align list.norm_prod_le' List.norm_prod_le'
+/- warning: list.nnnorm_prod_le' -> List.nnnorm_prod_le' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] {l : List.{u1} α}, (Ne.{succ u1} (List.{u1} α) l (List.nil.{u1} α)) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l)))
+Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le' List.nnnorm_prod_le'ₓ'. -/
theorem List.nnnorm_prod_le' {l : List α} (hl : l ≠ []) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
(List.norm_prod_le' hl).trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le' List.nnnorm_prod_le'
+/- warning: list.norm_prod_le -> List.norm_prod_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1)) l))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1)) l))
+Case conversion may be inaccurate. Consider using '#align list.norm_prod_le List.norm_prod_leₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem List.norm_prod_le [NormOneClass α] : ∀ l : List α, ‖l.Prod‖ ≤ (l.map norm).Prod
| [] => by simp
| a::l => List.norm_prod_le' (List.cons_ne_nil a l)
#align list.norm_prod_le List.norm_prod_le
+/- warning: list.nnnorm_prod_le -> List.nnnorm_prod_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (l : List.{u1} α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1))))) l))
+Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod_le List.nnnorm_prod_leₓ'. -/
theorem List.nnnorm_prod_le [NormOneClass α] (l : List α) : ‖l.Prod‖₊ ≤ (l.map nnnorm).Prod :=
l.norm_prod_le.trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le List.nnnorm_prod_le
+/- warning: finset.norm_prod_le' -> Finset.norm_prod_le' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i))))
+Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le' Finset.norm_prod_le'ₓ'. -/
theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
@@ -327,11 +473,23 @@ theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (
simpa using List.norm_prod_le' this
#align finset.norm_prod_le' Finset.norm_prod_le'
+/- warning: finset.nnnorm_prod_le' -> Finset.nnnorm_prod_le' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] (s : Finset.{u1} ι), (Finset.Nonempty.{u1} ι s) -> (forall (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i))))
+Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'ₓ'. -/
theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le' hs f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'
+/- warning: finset.norm_prod_le -> Finset.norm_prod_le is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (NonAssocRing.toAddGroupWithOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.hasLe (Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.commMonoid s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} Real Real.instLEReal (Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} Real ι Real.instCommMonoidReal s (fun (i : ι) => Norm.norm.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (f i)))
+Case conversion may be inaccurate. Consider using '#align finset.norm_prod_le Finset.norm_prod_leₓ'. -/
theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ :=
by
@@ -339,11 +497,23 @@ theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α]
simpa using (l.map f).norm_prod_le
#align finset.norm_prod_le Finset.norm_prod_le
+/- warning: finset.nnnorm_prod_le -> Finset.nnnorm_prod_le is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toHasNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (AddMonoidWithOne.toOne.{u2} α (AddGroupWithOne.toAddMonoidWithOne.{u2} α (NonAssocRing.toAddGroupWithOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_2 : NormedCommRing.{u2} α] [_inst_3 : NormOneClass.{u2} α (NormedRing.toNorm.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)) (NonAssocRing.toOne.{u2} α (Ring.toNonAssocRing.{u2} α (NormedRing.toRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2))))] (s : Finset.{u1} ι) (f : ι -> α), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (Finset.prod.{u2, u1} α ι (CommRing.toCommMonoid.{u2} α (SeminormedCommRing.toCommRing.{u2} α (NormedCommRing.toSeminormedCommRing.{u2} α _inst_2))) s (fun (i : ι) => f i))) (Finset.prod.{0, u1} NNReal ι (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (i : ι) => NNNorm.nnnorm.{u2} α (SeminormedAddGroup.toNNNorm.{u2} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u2} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u2} α (NormedRing.toNonUnitalNormedRing.{u2} α (NormedCommRing.toNormedRing.{u2} α _inst_2)))))) (f i)))
+Case conversion may be inaccurate. Consider using '#align finset.nnnorm_prod_le Finset.nnnorm_prod_leₓ'. -/
theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le Finset.nnnorm_prod_le
+/- warning: nnnorm_pow_le' -> nnnorm_pow_le' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n) -> (LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n))
+Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le' nnnorm_pow_le'ₓ'. -/
/-- If `α` is a seminormed ring, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n` for `n > 0`.
See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
@@ -353,47 +523,77 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' n.succ_pos) _)
#align nnnorm_pow_le' nnnorm_pow_le'
+/- warning: nnnorm_pow_le -> nnnorm_pow_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} NNReal (Preorder.toLE.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (SeminormedRing.toNonUnitalSeminormedRing.{u1} α _inst_1)))) a) n)
+Case conversion may be inaccurate. Consider using '#align nnnorm_pow_le nnnorm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖₊ = 1`, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n`.
See also `nnnorm_pow_le'`.-/
theorem nnnorm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n :=
Nat.recOn n (by simp only [pow_zero, nnnorm_one]) fun k hk => nnnorm_pow_le' a k.succ_pos
#align nnnorm_pow_le nnnorm_pow_le
+/- warning: norm_pow_le' -> norm_pow_le' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat Nat.hasLt (OfNat.ofNat.{0} Nat 0 (OfNat.mk.{0} Nat 0 (Zero.zero.{0} Nat Nat.hasZero))) n) -> (LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α) {n : Nat}, (LT.lt.{0} Nat instLTNat (OfNat.ofNat.{0} Nat 0 (instOfNatNat 0)) n) -> (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n))
+Case conversion may be inaccurate. Consider using '#align norm_pow_le' norm_pow_le'ₓ'. -/
/-- If `α` is a seminormed ring, then `‖a ^ n‖ ≤ ‖a‖ ^ n` for `n > 0`. See also `norm_pow_le`. -/
theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^ n := by
simpa only [NNReal.coe_pow, coe_nnnorm] using NNReal.coe_mono (nnnorm_pow_le' a h)
#align norm_pow_le' norm_pow_le'
+/- warning: norm_pow_le -> norm_pow_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))] (a : α) (n : Nat), LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] [_inst_2 : NormOneClass.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))] (a : α) (n : Nat), LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)
+Case conversion may be inaccurate. Consider using '#align norm_pow_le norm_pow_leₓ'. -/
/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`. See also `norm_pow_le'`.-/
theorem norm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖ ≤ ‖a‖ ^ n :=
Nat.recOn n (by simp only [pow_zero, norm_one]) fun n hn => norm_pow_le' a n.succ_pos
#align norm_pow_le norm_pow_le
+/- warning: eventually_norm_pow_le -> eventually_norm_pow_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α), Filter.Eventually.{0} Nat (fun (n : Nat) => LE.le.{0} Real Real.hasLe (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (SeminormedRing.toHasNorm.{u1} α _inst_1) a) n)) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedRing.{u1} α] (a : α), Filter.Eventually.{0} Nat (fun (n : Nat) => LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (SeminormedRing.toRing.{u1} α _inst_1)))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (SeminormedRing.toNorm.{u1} α _inst_1) a) n)) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)))
+Case conversion may be inaccurate. Consider using '#align eventually_norm_pow_le eventually_norm_pow_leₓ'. -/
theorem eventually_norm_pow_le (a : α) : ∀ᶠ n : ℕ in atTop, ‖a ^ n‖ ≤ ‖a‖ ^ n :=
eventually_atTop.mpr ⟨1, fun b h => norm_pow_le' a (Nat.succ_le_iff.mp h)⟩
#align eventually_norm_pow_le eventually_norm_pow_le
-instance : SemiNormedRing (ULift α) :=
+instance : SeminormedRing (ULift α) :=
{ ULift.nonUnitalSemiNormedRing, ULift.seminormedAddCommGroup with }
+#print Prod.seminormedRing /-
/-- Seminormed ring structure on the product of two seminormed rings,
using the sup norm. -/
-instance Prod.semiNormedRing [SemiNormedRing β] : SemiNormedRing (α × β) :=
- { Prod.nonUnitalSemiNormedRing, Prod.seminormedAddCommGroup with }
-#align prod.semi_normed_ring Prod.semiNormedRing
+instance Prod.seminormedRing [SeminormedRing β] : SeminormedRing (α × β) :=
+ { Prod.nonUnitalSeminormedRing, Prod.seminormedAddCommGroup with }
+#align prod.semi_normed_ring Prod.seminormedRing
+-/
+#print Pi.seminormedRing /-
/-- Seminormed ring structure on the product of finitely many seminormed rings,
using the sup norm. -/
-instance Pi.semiNormedRing {π : ι → Type _} [Fintype ι] [∀ i, SemiNormedRing (π i)] :
- SemiNormedRing (∀ i, π i) :=
- { Pi.nonUnitalSemiNormedRing, Pi.seminormedAddCommGroup with }
-#align pi.semi_normed_ring Pi.semiNormedRing
+instance Pi.seminormedRing {π : ι → Type _} [Fintype ι] [∀ i, SeminormedRing (π i)] :
+ SeminormedRing (∀ i, π i) :=
+ { Pi.nonUnitalSeminormedRing, Pi.seminormedAddCommGroup with }
+#align pi.semi_normed_ring Pi.seminormedRing
+-/
-instance MulOpposite.semiNormedRing : SemiNormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSemiNormedRing, MulOpposite.seminormedAddCommGroup with }
-#align mul_opposite.semi_normed_ring MulOpposite.semiNormedRing
+#print MulOpposite.seminormedRing /-
+instance MulOpposite.seminormedRing : SeminormedRing αᵐᵒᵖ :=
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.seminormedAddCommGroup with }
+#align mul_opposite.semi_normed_ring MulOpposite.seminormedRing
+-/
-end SemiNormedRing
+end SeminormedRing
section NonUnitalNormedRing
@@ -402,22 +602,28 @@ variable [NonUnitalNormedRing α]
instance : NonUnitalNormedRing (ULift α) :=
{ ULift.nonUnitalSemiNormedRing, ULift.seminormedAddCommGroup with }
+#print Prod.nonUnitalNormedRing /-
/-- Non-unital normed ring structure on the product of two non-unital normed rings,
using the sup norm. -/
instance Prod.nonUnitalNormedRing [NonUnitalNormedRing β] : NonUnitalNormedRing (α × β) :=
{ Prod.seminormedAddCommGroup with norm_mul := norm_mul_le }
#align prod.non_unital_normed_ring Prod.nonUnitalNormedRing
+-/
+#print Pi.nonUnitalNormedRing /-
/-- Normed ring structure on the product of finitely many non-unital normed rings, using the sup
norm. -/
instance Pi.nonUnitalNormedRing {π : ι → Type _} [Fintype ι] [∀ i, NonUnitalNormedRing (π i)] :
NonUnitalNormedRing (∀ i, π i) :=
{ Pi.normedAddCommGroup with norm_mul := norm_mul_le }
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
+-/
+#print MulOpposite.nonUnitalNormedRing /-
instance MulOpposite.nonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
{ MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
#align mul_opposite.non_unital_normed_ring MulOpposite.nonUnitalNormedRing
+-/
end NonUnitalNormedRing
@@ -425,10 +631,22 @@ section NormedRing
variable [NormedRing α]
+/- warning: units.norm_pos -> Units.norm_pos is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedRing.toHasNorm.{u1} α _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1))))), LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedRing.toNorm.{u1} α _inst_1) (Units.val.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1)))) x))
+Case conversion may be inaccurate. Consider using '#align units.norm_pos Units.norm_posₓ'. -/
theorem Units.norm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖ :=
norm_pos_iff.mpr (Units.ne_zero x)
#align units.norm_pos Units.norm_pos
+/- warning: units.nnnorm_pos -> Units.nnnorm_pos is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))), LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (coeBase.{succ u1, succ u1} (Units.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1))) α (Units.hasCoe.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α _inst_1)))))) x))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedRing.{u1} α] [_inst_2 : Nontrivial.{u1} α] (x : Units.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1))))), LT.lt.{0} NNReal (Preorder.toLT.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (StrictOrderedSemiring.toPartialOrder.{0} NNReal instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} NNReal 0 (Zero.toOfNat0.{0} NNReal instNNRealZero)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α _inst_1))))) (Units.val.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α (NormedRing.toRing.{u1} α _inst_1)))) x))
+Case conversion may be inaccurate. Consider using '#align units.nnnorm_pos Units.nnnorm_posₓ'. -/
theorem Units.nnnorm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖₊ :=
x.norm_pos
#align units.nnnorm_pos Units.nnnorm_pos
@@ -436,25 +654,37 @@ theorem Units.nnnorm_pos [Nontrivial α] (x : αˣ) : 0 < ‖(x : α)‖₊ :=
instance : NormedRing (ULift α) :=
{ ULift.semiNormedRing, ULift.normedAddCommGroup with }
+#print Prod.normedRing /-
/-- Normed ring structure on the product of two normed rings, using the sup norm. -/
instance Prod.normedRing [NormedRing β] : NormedRing (α × β) :=
{ Prod.normedAddCommGroup with norm_mul := norm_mul_le }
#align prod.normed_ring Prod.normedRing
+-/
+#print Pi.normedRing /-
/-- Normed ring structure on the product of finitely many normed rings, using the sup norm. -/
instance Pi.normedRing {π : ι → Type _} [Fintype ι] [∀ i, NormedRing (π i)] :
NormedRing (∀ i, π i) :=
{ Pi.normedAddCommGroup with norm_mul := norm_mul_le }
#align pi.normed_ring Pi.normedRing
+-/
+#print MulOpposite.normedRing /-
instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
{ MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
#align mul_opposite.normed_ring MulOpposite.normedRing
+-/
end NormedRing
+/- warning: semi_normed_ring_top_monoid -> semi_normed_ring_top_monoid is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α], ContinuousMul.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NonUnitalSeminormedRing.{u1} α], ContinuousMul.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (NonUnitalSeminormedRing.toPseudoMetricSpace.{u1} α _inst_1))) (NonUnitalNonAssocRing.toMul.{u1} α (NonUnitalRing.toNonUnitalNonAssocRing.{u1} α (NonUnitalSeminormedRing.toNonUnitalRing.{u1} α _inst_1)))
+Case conversion may be inaccurate. Consider using '#align semi_normed_ring_top_monoid semi_normed_ring_top_monoidₓ'. -/
-- see Note [lower instance priority]
-instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSemiNormedRing α] :
+instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
⟨continuous_iff_continuousAt.2 fun x =>
tendsto_iff_norm_tendsto_zero.2 <|
@@ -478,25 +708,36 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSemiNormedRing
simp⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
+#print semi_normed_top_ring /-
-- see Note [lower instance priority]
/-- A seminormed ring is a topological ring. -/
-instance (priority := 100) semi_normed_top_ring [NonUnitalSemiNormedRing α] : TopologicalRing α
+instance (priority := 100) semi_normed_top_ring [NonUnitalSeminormedRing α] : TopologicalRing α
where
#align semi_normed_top_ring semi_normed_top_ring
+-/
section NormedDivisionRing
variable [NormedDivisionRing α]
+/- warning: norm_mul -> norm_mul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) b))
+Case conversion may be inaccurate. Consider using '#align norm_mul norm_mulₓ'. -/
@[simp]
theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
NormedDivisionRing.norm_mul' a b
#align norm_mul norm_mul
+#print NormedDivisionRing.to_normOneClass /-
instance (priority := 900) NormedDivisionRing.to_normOneClass : NormOneClass α :=
⟨mul_left_cancel₀ (mt norm_eq_zero.1 (one_ne_zero' α)) <| by rw [← norm_mul, mul_one, mul_one]⟩
#align normed_division_ring.to_norm_one_class NormedDivisionRing.to_normOneClass
+-/
+#print isAbsoluteValue_norm /-
instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
where
abv_nonneg := norm_nonneg
@@ -504,78 +745,157 @@ instance isAbsoluteValue_norm : IsAbsoluteValue (norm : α → ℝ)
abv_add := norm_add_le
abv_mul := norm_mul
#align is_absolute_value_norm isAbsoluteValue_norm
+-/
+/- warning: nnnorm_mul -> nnnorm_mul is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a b)) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
+Case conversion may be inaccurate. Consider using '#align nnnorm_mul nnnorm_mulₓ'. -/
@[simp]
theorem nnnorm_mul (a b : α) : ‖a * b‖₊ = ‖a‖₊ * ‖b‖₊ :=
NNReal.eq <| norm_mul a b
#align nnnorm_mul nnnorm_mul
+#print normHom /-
/-- `norm` as a `monoid_with_zero_hom`. -/
@[simps]
def normHom : α →*₀ ℝ :=
⟨norm, norm_zero, norm_one, norm_mul⟩
#align norm_hom normHom
+-/
+#print nnnormHom /-
/-- `nnnorm` as a `monoid_with_zero_hom`. -/
@[simps]
def nnnormHom : α →*₀ ℝ≥0 :=
⟨nnnorm, nnnorm_zero, nnnorm_one, nnnorm_mul⟩
#align nnnorm_hom nnnormHom
+-/
+/- warning: norm_pow -> norm_pow is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) n)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) a n)) (HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) n)
+Case conversion may be inaccurate. Consider using '#align norm_pow norm_powₓ'. -/
@[simp]
theorem norm_pow (a : α) : ∀ n : ℕ, ‖a ^ n‖ = ‖a‖ ^ n :=
(normHom.toMonoidHom : α →* ℝ).map_pow a
#align norm_pow norm_pow
+/- warning: nnnorm_pow -> nnnorm_pow is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal NNReal.semiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Nat), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) a n)) (HPow.hPow.{0, 0, 0} NNReal Nat NNReal (instHPow.{0, 0} NNReal Nat (Monoid.Pow.{0} NNReal (MonoidWithZero.toMonoid.{0} NNReal (Semiring.toMonoidWithZero.{0} NNReal instNNRealSemiring)))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
+Case conversion may be inaccurate. Consider using '#align nnnorm_pow nnnorm_powₓ'. -/
@[simp]
theorem nnnorm_pow (a : α) (n : ℕ) : ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_pow a n
#align nnnorm_pow nnnorm_pow
+/- warning: list.norm_prod -> List.norm_prod is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} Real Real.hasMul Real.hasOne (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) l))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} Real Real.instMulReal Real.instOneReal (List.map.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) l))
+Case conversion may be inaccurate. Consider using '#align list.norm_prod List.norm_prodₓ'. -/
protected theorem List.norm_prod (l : List α) : ‖l.Prod‖ = (l.map norm).Prod :=
(normHom.toMonoidHom : α →* ℝ).map_list_prod _
#align list.norm_prod List.norm_prod
+/- warning: list.nnnorm_prod -> List.nnnorm_prod is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) l)) (List.prod.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (AddMonoidWithOne.toOne.{0} NNReal (AddCommMonoidWithOne.toAddMonoidWithOne.{0} NNReal (NonAssocSemiring.toAddCommMonoidWithOne.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring)))) (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (l : List.{u1} α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (List.prod.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) l)) (List.prod.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring) instNNRealOne (List.map.{u1, 0} α NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) l))
+Case conversion may be inaccurate. Consider using '#align list.nnnorm_prod List.nnnorm_prodₓ'. -/
protected theorem List.nnnorm_prod (l : List α) : ‖l.Prod‖₊ = (l.map nnnorm).Prod :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_list_prod _
#align list.nnnorm_prod List.nnnorm_prod
+/- warning: norm_div -> norm_div is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivInvMonoid.toHasDiv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a b)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivisionRing.toDiv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a b)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) b))
+Case conversion may be inaccurate. Consider using '#align norm_div norm_divₓ'. -/
@[simp]
theorem norm_div (a b : α) : ‖a / b‖ = ‖a‖ / ‖b‖ :=
map_div₀ (normHom : α →*₀ ℝ) a b
#align norm_div norm_div
+/- warning: nnnorm_div -> nnnorm_div is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivInvMonoid.toHasDiv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a b)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal NNReal.hasDiv) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (b : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HDiv.hDiv.{u1, u1, u1} α α α (instHDiv.{u1} α (DivisionRing.toDiv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a b)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal (CanonicallyLinearOrderedSemifield.toDiv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) b))
+Case conversion may be inaccurate. Consider using '#align nnnorm_div nnnorm_divₓ'. -/
@[simp]
theorem nnnorm_div (a b : α) : ‖a / b‖₊ = ‖a‖₊ / ‖b‖₊ :=
map_div₀ (nnnormHom : α →*₀ ℝ≥0) a b
#align nnnorm_div nnnorm_div
+/- warning: norm_inv -> norm_inv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a)) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) a))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) a)) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) a))
+Case conversion may be inaccurate. Consider using '#align norm_inv norm_invₓ'. -/
@[simp]
theorem norm_inv (a : α) : ‖a⁻¹‖ = ‖a‖⁻¹ :=
map_inv₀ (normHom : α →*₀ ℝ) a
#align norm_inv norm_inv
+/- warning: nnnorm_inv -> nnnorm_inv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) a)) (Inv.inv.{0} NNReal (DivInvMonoid.toHasInv.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.canonicallyLinearOrderedSemifield)))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) a)) (Inv.inv.{0} NNReal (CanonicallyLinearOrderedSemifield.toInv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a))
+Case conversion may be inaccurate. Consider using '#align nnnorm_inv nnnorm_invₓ'. -/
@[simp]
theorem nnnorm_inv (a : α) : ‖a⁻¹‖₊ = ‖a‖₊⁻¹ :=
NNReal.eq <| by simp
#align nnnorm_inv nnnorm_inv
+#print norm_zpow /-
@[simp]
theorem norm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖ = ‖a‖ ^ n :=
map_zpow₀ (normHom : α →*₀ ℝ)
#align norm_zpow norm_zpow
+-/
+/- warning: nnnorm_zpow -> nnnorm_zpow is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Int), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Int α (instHPow.{u1, 0} α Int (DivInvMonoid.Pow.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Int NNReal (instHPow.{0, 0} NNReal Int (DivInvMonoid.Pow.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.canonicallyLinearOrderedSemifield))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] (a : α) (n : Int), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Int α (instHPow.{u1, 0} α Int (DivInvMonoid.Pow.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))) a n)) (HPow.hPow.{0, 0, 0} NNReal Int NNReal (instHPow.{0, 0} NNReal Int (DivInvMonoid.Pow.{0} NNReal (GroupWithZero.toDivInvMonoid.{0} NNReal (DivisionSemiring.toGroupWithZero.{0} NNReal (Semifield.toDivisionSemiring.{0} NNReal (LinearOrderedSemifield.toSemifield.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedSemifield.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal))))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) a) n)
+Case conversion may be inaccurate. Consider using '#align nnnorm_zpow nnnorm_zpowₓ'. -/
@[simp]
theorem nnnorm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
map_zpow₀ (nnnormHom : α →*₀ ℝ≥0)
#align nnnorm_zpow nnnorm_zpow
+/- warning: dist_inv_inv₀ -> dist_inv_inv₀ is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Eq.{1} Real (Dist.dist.{u1} α (PseudoMetricSpace.toHasDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) z) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) w)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (DivInvMonoid.toHasDiv.{0} Real (DivisionRing.toDivInvMonoid.{0} Real Real.divisionRing))) (Dist.dist.{u1} α (PseudoMetricSpace.toHasDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) z) (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) w))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Eq.{1} Real (Dist.dist.{u1} α (PseudoMetricSpace.toDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) z) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) w)) (HDiv.hDiv.{0, 0, 0} Real Real Real (instHDiv.{0} Real (LinearOrderedField.toDiv.{0} Real Real.instLinearOrderedFieldReal)) (Dist.dist.{u1} α (PseudoMetricSpace.toDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) z) (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) w))))
+Case conversion may be inaccurate. Consider using '#align dist_inv_inv₀ dist_inv_inv₀ₓ'. -/
theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) :=
by
rw [dist_eq_norm, inv_sub_inv' hz hw, norm_mul, norm_mul, norm_inv, norm_inv, mul_comm ‖z‖⁻¹,
mul_assoc, dist_eq_norm', div_eq_mul_inv, mul_inv]
#align dist_inv_inv₀ dist_inv_inv₀
+/- warning: nndist_inv_inv₀ -> nndist_inv_inv₀ is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Eq.{1} NNReal (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) z) (Inv.inv.{u1} α (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) w)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal NNReal.hasDiv) (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) z) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) w))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {z : α} {w : α}, (Ne.{succ u1} α z (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Ne.{succ u1} α w (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Eq.{1} NNReal (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) z) (Inv.inv.{u1} α (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) w)) (HDiv.hDiv.{0, 0, 0} NNReal NNReal NNReal (instHDiv.{0} NNReal (CanonicallyLinearOrderedSemifield.toDiv.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)) (NNDist.nndist.{u1} α (PseudoMetricSpace.toNNDist.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))) z w) (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) z) (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) w))))
+Case conversion may be inaccurate. Consider using '#align nndist_inv_inv₀ nndist_inv_inv₀ₓ'. -/
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) :=
by
@@ -583,6 +903,12 @@ theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
#align nndist_inv_inv₀ nndist_inv_inv₀
+/- warning: filter.tendsto_mul_left_cobounded -> Filter.tendsto_mul_left_cobounded is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α ((fun (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5229 : α) (x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5229 x._@.Mathlib.Analysis.Normed.Field.Basic._hyg.5231) a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_coboundedₓ'. -/
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
@@ -591,6 +917,12 @@ theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
tendsto_const_nhds.mul_at_top (norm_pos_iff.2 ha) tendsto_comap
#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_cobounded
+/- warning: filter.tendsto_mul_right_cobounded -> Filter.tendsto_mul_right_cobounded is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))))) -> (Filter.Tendsto.{u1, u1} α α (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (Ring.toDistrib.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.preorder)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {a : α}, (Ne.{succ u1} α a (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)))))))) -> (Filter.Tendsto.{u1, u1} α α (fun (x : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocRing.toMul.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) x a) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)) (Filter.comap.{u1, 0} α Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1)) (Filter.atTop.{0} Real Real.instPreorderReal)))
+Case conversion may be inaccurate. Consider using '#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_coboundedₓ'. -/
/-- Multiplication on the right by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
@@ -599,6 +931,12 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
tendsto_comap.at_top_mul (norm_pos_iff.2 ha) tendsto_const_nhds
#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_cobounded
+/- warning: normed_division_ring.to_has_continuous_inv₀ -> NormedDivisionRing.to_hasContinuousInv₀ is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], HasContinuousInv₀.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α], HasContinuousInv₀.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))) (DivisionRing.toInv.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (NormedRing.toSeminormedRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align normed_division_ring.to_has_continuous_inv₀ NormedDivisionRing.to_hasContinuousInv₀ₓ'. -/
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α :=
by
@@ -622,12 +960,20 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
simp
#align normed_division_ring.to_has_continuous_inv₀ NormedDivisionRing.to_hasContinuousInv₀
+#print NormedDivisionRing.to_topologicalDivisionRing /-
-- see Note [lower instance priority]
/-- A normed division ring is a topological division ring. -/
instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : TopologicalDivisionRing α
where
#align normed_division_ring.to_topological_division_ring NormedDivisionRing.to_topologicalDivisionRing
+-/
+/- warning: norm_map_one_of_pow_eq_one -> norm_map_one_of_pow_eq_one is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) (coeFn.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (fun (_x : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) => β -> α) (MonoidHom.hasCoeToFun.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) φ x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedDivisionRing.{u1} α] [_inst_2 : Monoid.{u2} β] (φ : MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) {x : β} {k : PNat}, (Eq.{succ u2} β (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat (Monoid.Pow.{u2} β _inst_2)) x (PNat.val k)) (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β (Monoid.toOne.{u2} β _inst_2)))) -> (Eq.{1} Real (Norm.norm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) (NormedDivisionRing.toNorm.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) x) _inst_1) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β (fun (_x : β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : β) => α) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β α (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u1} α (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))) (MonoidHom.monoidHomClass.{u2, u1} β α (Monoid.toMulOneClass.{u2} β _inst_2) (MulZeroOneClass.toMulOneClass.{u1} α (NonAssocSemiring.toMulZeroOneClass.{u1} α (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))))) φ x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_oneₓ'. -/
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 :=
by
@@ -635,34 +981,47 @@ theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k :
exacts[norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
+/- warning: norm_one_of_pow_eq_one -> norm_one_of_pow_eq_one is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) PNat Nat (HasLiftT.mk.{1, 1} PNat Nat (CoeTCₓ.coe.{1, 1} PNat Nat (coeBase.{1, 1} PNat Nat coePNatNat))) k)) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddGroupWithOne.toAddMonoidWithOne.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1)))))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toHasNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NormedDivisionRing.{u1} α] {x : α} {k : PNat}, (Eq.{succ u1} α (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (DivisionRing.toDivisionSemiring.{u1} α (NormedDivisionRing.toDivisionRing.{u1} α _inst_1))))))) x (PNat.val k)) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (NonAssocRing.toOne.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedDivisionRing.toNormedRing.{u1} α _inst_1))))))) -> (Eq.{1} Real (Norm.norm.{u1} α (NormedDivisionRing.toNorm.{u1} α _inst_1) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)))
+Case conversion may be inaccurate. Consider using '#align norm_one_of_pow_eq_one norm_one_of_pow_eq_oneₓ'. -/
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
norm_map_one_of_pow_eq_one (MonoidHom.id α) h
#align norm_one_of_pow_eq_one norm_one_of_pow_eq_one
end NormedDivisionRing
+#print NormedField /-
/-- A normed field is a field with a norm satisfying ‖x y‖ = ‖x‖ ‖y‖. -/
class NormedField (α : Type _) extends Norm α, Field α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul' : ∀ a b, norm (a * b) = norm a * norm b
#align normed_field NormedField
+-/
+#print NontriviallyNormedField /-
/-- A nontrivially normed field is a normed field in which there is an element of norm different
from `0` and `1`. This makes it possible to bring any element arbitrarily close to `0` by
multiplication by the powers of any element, and thus to relate algebra and topology. -/
class NontriviallyNormedField (α : Type _) extends NormedField α where
non_trivial : ∃ x : α, 1 < ‖x‖
#align nontrivially_normed_field NontriviallyNormedField
+-/
+#print DenselyNormedField /-
/-- A densely normed field is a normed field for which the image of the norm is dense in `ℝ≥0`,
which means it is also nontrivially normed. However, not all nontrivally normed fields are densely
normed; in particular, the `padic`s exhibit this fact. -/
class DenselyNormedField (α : Type _) extends NormedField α where
lt_norm_lt : ∀ x y : ℝ, 0 ≤ x → x < y → ∃ a : α, x < ‖a‖ ∧ ‖a‖ < y
#align densely_normed_field DenselyNormedField
+-/
section NormedField
+#print DenselyNormedField.toNontriviallyNormedField /-
/-- A densely normed field is always a nontrivially normed field.
See note [lower instance priority]. -/
instance (priority := 100) DenselyNormedField.toNontriviallyNormedField [DenselyNormedField α] :
@@ -671,24 +1030,37 @@ instance (priority := 100) DenselyNormedField.toNontriviallyNormedField [Densely
let ⟨a, h, _⟩ := DenselyNormedField.lt_norm_lt 1 2 zero_le_one one_lt_two
⟨a, h⟩
#align densely_normed_field.to_nontrivially_normed_field DenselyNormedField.toNontriviallyNormedField
+-/
variable [NormedField α]
+#print NormedField.toNormedDivisionRing /-
-- see Note [lower instance priority]
instance (priority := 100) NormedField.toNormedDivisionRing : NormedDivisionRing α :=
{ ‹NormedField α› with }
#align normed_field.to_normed_division_ring NormedField.toNormedDivisionRing
+-/
+#print NormedField.toNormedCommRing /-
-- see Note [lower instance priority]
instance (priority := 100) NormedField.toNormedCommRing : NormedCommRing α :=
{ ‹NormedField α› with norm_mul := fun a b => (norm_mul a b).le }
#align normed_field.to_normed_comm_ring NormedField.toNormedCommRing
+-/
+#print norm_prod /-
@[simp]
theorem norm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖ = ∏ b in s, ‖f b‖ :=
(normHom.toMonoidHom : α →* ℝ).map_prod f s
#align norm_prod norm_prod
+-/
+/- warning: nnnorm_prod -> nnnorm_prod is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedField.{u1} α] (s : Finset.{u2} β) (f : β -> α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (Finset.prod.{u1, u2} α β (CommRing.toCommMonoid.{u1} α (SeminormedCommRing.toCommRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1)))) s (fun (b : β) => f b))) (Finset.prod.{0, u2} NNReal β (OrderedCommMonoid.toCommMonoid.{0} NNReal (CanonicallyOrderedCommSemiring.toOrderedCommMonoid.{0} NNReal NNReal.canonicallyOrderedCommSemiring)) s (fun (b : β) => NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (f b)))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : NormedField.{u1} α] (s : Finset.{u2} β) (f : β -> α), Eq.{1} NNReal (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (Finset.prod.{u1, u2} α β (CommRing.toCommMonoid.{u1} α (EuclideanDomain.toCommRing.{u1} α (Field.toEuclideanDomain.{u1} α (NormedField.toField.{u1} α _inst_1)))) s (fun (b : β) => f b))) (Finset.prod.{0, u2} NNReal β (LinearOrderedCommMonoid.toCommMonoid.{0} NNReal (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{0} NNReal (LinearOrderedCommGroupWithZero.toLinearOrderedCommMonoidWithZero.{0} NNReal (CanonicallyLinearOrderedSemifield.toLinearOrderedCommGroupWithZero.{0} NNReal NNReal.instCanonicallyLinearOrderedSemifieldNNReal)))) s (fun (b : β) => NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_1))))))) (f b)))
+Case conversion may be inaccurate. Consider using '#align nnnorm_prod nnnorm_prodₓ'. -/
@[simp]
theorem nnnorm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖₊ = ∏ b in s, ‖f b‖₊ :=
(nnnormHom.toMonoidHom : α →* ℝ≥0).map_prod f s
@@ -702,27 +1074,57 @@ section Nontrivially
variable (α) [NontriviallyNormedField α]
+/- warning: normed_field.exists_one_lt_norm -> NormedField.exists_one_lt_norm is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_one_lt_norm NormedField.exists_one_lt_normₓ'. -/
theorem exists_one_lt_norm : ∃ x : α, 1 < ‖x‖ :=
‹NontriviallyNormedField α›.non_trivial
#align normed_field.exists_one_lt_norm NormedField.exists_one_lt_norm
+/- warning: normed_field.exists_lt_norm -> NormedField.exists_lt_norm is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] (r : Real), Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.hasLt r (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] (r : Real), Exists.{succ u1} α (fun (x : α) => LT.lt.{0} Real Real.instLTReal r (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_norm NormedField.exists_lt_normₓ'. -/
theorem exists_lt_norm (r : ℝ) : ∃ x : α, r < ‖x‖ :=
let ⟨w, hw⟩ := exists_one_lt_norm α
let ⟨n, hn⟩ := pow_unbounded_of_one_lt r hw
⟨w ^ n, by rwa [norm_pow]⟩
#align normed_field.exists_lt_norm NormedField.exists_lt_norm
+/- warning: normed_field.exists_norm_lt -> NormedField.exists_norm_lt is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) r)))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α] {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) r)))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_norm_lt NormedField.exists_norm_ltₓ'. -/
theorem exists_norm_lt {r : ℝ} (hr : 0 < r) : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < r :=
let ⟨w, hw⟩ := exists_lt_norm α r⁻¹
⟨w⁻¹, by rwa [← Set.mem_Ioo, norm_inv, ← Set.mem_inv, Set.inv_Ioo_0_left hr]⟩
#align normed_field.exists_norm_lt NormedField.exists_norm_lt
+/- warning: normed_field.exists_norm_lt_one -> NormedField.exists_norm_lt_one is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : NontriviallyNormedField.{u1} α], Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)) x) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_norm_lt_one NormedField.exists_norm_lt_oneₓ'. -/
theorem exists_norm_lt_one : ∃ x : α, 0 < ‖x‖ ∧ ‖x‖ < 1 :=
exists_norm_lt α one_pos
#align normed_field.exists_norm_lt_one NormedField.exists_norm_lt_one
variable {α}
+/- warning: normed_field.punctured_nhds_ne_bot -> NormedField.punctured_nhds_neBot is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α] (x : α), Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.hasSingleton.{u1} α) x)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α] (x : α), Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) x)))
+Case conversion may be inaccurate. Consider using '#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBotₓ'. -/
@[instance]
theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
by
@@ -733,6 +1135,12 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) :=
rwa [dist_comm, dist_eq_norm, add_sub_cancel']
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
+/- warning: normed_field.nhds_within_is_unit_ne_bot -> NormedField.nhdsWithin_isUnit_neBot is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α], Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)))))))))))) (setOf.{u1} α (fun (x : α) => IsUnit.{u1} α (Ring.toMonoid.{u1} α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))) x)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : NontriviallyNormedField.{u1} α], Filter.NeBot.{u1} α (nhdsWithin.{u1} α (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommGroupWithZero.toCommMonoidWithZero.{u1} α (Semifield.toCommGroupWithZero.{u1} α (Field.toSemifield.{u1} α (NormedField.toField.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1)))))))) (setOf.{u1} α (fun (x : α) => IsUnit.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (DivisionSemiring.toSemiring.{u1} α (Semifield.toDivisionSemiring.{u1} α (Field.toSemifield.{u1} α (NormedField.toField.{u1} α (NontriviallyNormedField.toNormedField.{u1} α _inst_1))))))) x)))
+Case conversion may be inaccurate. Consider using '#align normed_field.nhds_within_is_unit_ne_bot NormedField.nhdsWithin_isUnit_neBotₓ'. -/
@[instance]
theorem nhdsWithin_isUnit_neBot : NeBot (𝓝[{ x : α | IsUnit x }] 0) := by
simpa only [isUnit_iff_ne_zero] using punctured_nhds_ne_bot (0 : α)
@@ -744,14 +1152,28 @@ section Densely
variable (α) [DenselyNormedField α]
+/- warning: normed_field.exists_lt_norm_lt -> NormedField.exists_lt_norm_lt is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : Real} {r₂ : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r₁) -> (LT.lt.{0} Real Real.hasLt r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.hasLt r₁ (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x) r₂)))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α] {r₁ : Real} {r₂ : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r₁) -> (LT.lt.{0} Real Real.instLTReal r₁ r₂) -> (Exists.{succ u1} α (fun (x : α) => And (LT.lt.{0} Real Real.instLTReal r₁ (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x)) (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)) x) r₂)))
+Case conversion may be inaccurate. Consider using '#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_ltₓ'. -/
theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖ ∧ ‖x‖ < r₂ :=
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
+#print NormedField.exists_lt_nnnorm_lt /-
theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
exact_mod_cast exists_lt_norm_lt α r₁.prop h
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
+-/
+/- warning: normed_field.densely_ordered_range_norm -> NormedField.denselyOrdered_range_norm is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))) (Subtype.hasLt.{0} Real Real.hasLt (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenselyOrdered.{0} (Set.Elem.{0} Real (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))) (Subtype.lt.{0} Real Real.instLTReal (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (Set.range.{0, succ u1} Real α (Norm.norm.{u1} α (NormedField.toNorm.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_normₓ'. -/
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -760,6 +1182,7 @@ instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α →
⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
+#print NormedField.denselyOrdered_range_nnnorm /-
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0))
where dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
@@ -767,7 +1190,14 @@ instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α
let ⟨z, h⟩ := exists_lt_nnnorm_lt α hxy
⟨⟨‖z‖₊, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
+-/
+/- warning: normed_field.dense_range_nnnorm -> NormedField.denseRange_nnnorm is a dubious translation:
+lean 3 declaration is
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenseRange.{0, u1} NNReal NNReal.topologicalSpace α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))))
+but is expected to have type
+ forall (α : Type.{u1}) [_inst_1 : DenselyNormedField.{u1} α], DenseRange.{0, u1} NNReal NNReal.instTopologicalSpaceNNReal α (NNNorm.nnnorm.{u1} α (SeminormedAddGroup.toNNNorm.{u1} α (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} α (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{u1} α (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} α (NormedRing.toNonUnitalNormedRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α (DenselyNormedField.toNormedField.{u1} α _inst_1)))))))))
+Case conversion may be inaccurate. Consider using '#align normed_field.dense_range_nnnorm NormedField.denseRange_nnnormₓ'. -/
theorem denseRange_nnnorm : DenseRange (nnnorm : α → ℝ≥0) :=
dense_of_exists_between fun _ _ hr =>
let ⟨x, h⟩ := exists_lt_nnnorm_lt α hr
@@ -791,10 +1221,22 @@ noncomputable instance : DenselyNormedField ℝ
namespace Real
+/- warning: real.to_nnreal_mul_nnnorm -> Real.toNNReal_mul_nnnorm is a dubious translation:
+lean 3 declaration is
+ forall {x : Real} (y : Real), (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) x) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (Real.toNNReal x) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x y)))
+but is expected to have type
+ forall {x : Real} (y : Real), (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) x) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (Real.toNNReal x) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x y)))
+Case conversion may be inaccurate. Consider using '#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnormₓ'. -/
theorem toNNReal_mul_nnnorm {x : ℝ} (y : ℝ) (hx : 0 ≤ x) : x.toNNReal * ‖y‖₊ = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hx]
#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnorm
+/- warning: real.nnnorm_mul_to_nnreal -> Real.nnnorm_mul_toNNReal is a dubious translation:
+lean 3 declaration is
+ forall (x : Real) {y : Real}, (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) y) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (Distrib.toHasMul.{0} NNReal (NonUnitalNonAssocSemiring.toDistrib.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) x) (Real.toNNReal y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x y)))
+but is expected to have type
+ forall (x : Real) {y : Real}, (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) y) -> (Eq.{1} NNReal (HMul.hMul.{0, 0, 0} NNReal NNReal NNReal (instHMul.{0} NNReal (CanonicallyOrderedCommSemiring.toMul.{0} NNReal instNNRealCanonicallyOrderedCommSemiring)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) x) (Real.toNNReal y)) (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x y)))
+Case conversion may be inaccurate. Consider using '#align real.nnnorm_mul_to_nnreal Real.nnnorm_mul_toNNRealₓ'. -/
theorem nnnorm_mul_toNNReal (x : ℝ) {y : ℝ} (hy : 0 ≤ y) : ‖x‖₊ * y.toNNReal = ‖x * y‖₊ := by
simp [Real.toNNReal_of_nonneg, nnnorm, norm_of_nonneg, hy]
#align real.nnnorm_mul_to_nnreal Real.nnnorm_mul_toNNReal
@@ -805,10 +1247,22 @@ namespace NNReal
open NNReal
+/- warning: nnreal.norm_eq -> NNReal.norm_eq is a dubious translation:
+lean 3 declaration is
+ forall (x : NNReal), Eq.{1} Real (Norm.norm.{0} Real Real.hasNorm ((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))) x)) ((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))) x)
+but is expected to have type
+ forall (x : NNReal), Eq.{1} Real (Norm.norm.{0} Real Real.norm (NNReal.toReal x)) (NNReal.toReal x)
+Case conversion may be inaccurate. Consider using '#align nnreal.norm_eq NNReal.norm_eqₓ'. -/
@[simp]
theorem norm_eq (x : ℝ≥0) : ‖(x : ℝ)‖ = x := by rw [Real.norm_eq_abs, x.abs_eq]
#align nnreal.norm_eq NNReal.norm_eq
+/- warning: nnreal.nnnorm_eq -> NNReal.nnnorm_eq is a dubious translation:
+lean 3 declaration is
+ forall (x : NNReal), Eq.{1} NNReal (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) ((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))) x)) x
+but is expected to have type
+ forall (x : NNReal), Eq.{1} NNReal (NNNorm.nnnorm.{0} Real (SeminormedAddGroup.toNNNorm.{0} Real (SeminormedAddCommGroup.toSeminormedAddGroup.{0} Real (NonUnitalSeminormedRing.toSeminormedAddCommGroup.{0} Real (NonUnitalNormedRing.toNonUnitalSeminormedRing.{0} Real (NormedRing.toNonUnitalNormedRing.{0} Real (NormedCommRing.toNormedRing.{0} Real Real.normedCommRing)))))) (NNReal.toReal x)) x
+Case conversion may be inaccurate. Consider using '#align nnreal.nnnorm_eq NNReal.nnnorm_eqₓ'. -/
@[simp]
theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
NNReal.eq <| Real.norm_of_nonneg x.2
@@ -816,16 +1270,30 @@ theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
end NNReal
+/- warning: norm_norm -> norm_norm is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} α] (x : α), Eq.{1} Real (Norm.norm.{0} Real Real.hasNorm (Norm.norm.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) x)) (Norm.norm.{u1} α (SeminormedAddCommGroup.toHasNorm.{u1} α _inst_1) x)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : SeminormedAddCommGroup.{u1} α] (x : α), Eq.{1} Real (Norm.norm.{0} Real Real.norm (Norm.norm.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) x)) (Norm.norm.{u1} α (SeminormedAddCommGroup.toNorm.{u1} α _inst_1) x)
+Case conversion may be inaccurate. Consider using '#align norm_norm norm_normₓ'. -/
@[simp]
theorem norm_norm [SeminormedAddCommGroup α] (x : α) : ‖‖x‖‖ = ‖x‖ :=
Real.norm_of_nonneg (norm_nonneg _)
#align norm_norm norm_norm
+#print nnnorm_norm /-
@[simp]
theorem nnnorm_norm [SeminormedAddCommGroup α] (a : α) : ‖‖a‖‖₊ = ‖a‖₊ := by
simpa [Real.nnnorm_of_nonneg (norm_nonneg a)]
#align nnnorm_norm nnnorm_norm
+-/
+/- warning: normed_add_comm_group.tendsto_at_top -> NormedAddCommGroup.tendsto_atTop is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] {β : Type.{u2}} [_inst_3 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_3))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_3) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_3))))) (f n) b)) ε))))
+but is expected to have type
+ forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] {β : Type.{u1}} [_inst_3 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_3))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_3) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_3))))) (f n) b)) ε))))
+Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTopₓ'. -/
/-- A restatement of `metric_space.tendsto_at_top` in terms of the norm. -/
theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β : Type _}
[SeminormedAddCommGroup β] {f : α → β} {b : β} :
@@ -833,14 +1301,20 @@ theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β :
(atTop_basis.tendsto_iffₓ Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top NormedAddCommGroup.tendsto_atTop
+/- warning: normed_add_comm_group.tendsto_at_top' -> NormedAddCommGroup.tendsto_atTop' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : Nonempty.{succ u1} α] [_inst_2 : SemilatticeSup.{u1} α] [_inst_3 : NoMaxOrder.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2)))] {β : Type.{u2}} [_inst_4 : SeminormedAddCommGroup.{u2} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u1, u2} α β f (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) (nhds.{u2} β (UniformSpace.toTopologicalSpace.{u2} β (PseudoMetricSpace.toUniformSpace.{u2} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} β _inst_4))) b)) (forall (ε : 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} α (fun (N : α) => forall (n : α), (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α _inst_2))) N n) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u2} β (SeminormedAddCommGroup.toHasNorm.{u2} β _inst_4) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (SeminormedAddGroup.toAddGroup.{u2} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u2} β _inst_4))))) (f n) b)) ε))))
+but is expected to have type
+ forall {α : Type.{u2}} [_inst_1 : Nonempty.{succ u2} α] [_inst_2 : SemilatticeSup.{u2} α] [_inst_3 : NoMaxOrder.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2)))] {β : Type.{u1}} [_inst_4 : SeminormedAddCommGroup.{u1} β] {f : α -> β} {b : β}, Iff (Filter.Tendsto.{u2, u1} α β f (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} β _inst_4))) b)) (forall (ε : Real), (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) ε) -> (Exists.{succ u2} α (fun (N : α) => forall (n : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeSup.toPartialOrder.{u2} α _inst_2))) N n) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} β (SeminormedAddCommGroup.toNorm.{u1} β _inst_4) (HSub.hSub.{u1, u1, u1} β β β (instHSub.{u1} β (SubNegMonoid.toSub.{u1} β (AddGroup.toSubNegMonoid.{u1} β (SeminormedAddGroup.toAddGroup.{u1} β (SeminormedAddCommGroup.toSeminormedAddGroup.{u1} β _inst_4))))) (f n) b)) ε))))
+Case conversion may be inaccurate. Consider using '#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'ₓ'. -/
/-- A variant of `normed_add_comm_group.tendsto_at_top` that
uses `∃ N, ∀ n > N, ...` rather than `∃ N, ∀ n ≥ N, ...`
-/
-theorem NormedAddCommGroup.tendsto_at_top' [Nonempty α] [SemilatticeSup α] [NoMaxOrder α]
+theorem NormedAddCommGroup.tendsto_atTop' [Nonempty α] [SemilatticeSup α] [NoMaxOrder α]
{β : Type _} [SeminormedAddCommGroup β] {f : α → β} {b : β} :
Tendsto f atTop (𝓝 b) ↔ ∀ ε, 0 < ε → ∃ N, ∀ n, N < n → ‖f n - b‖ < ε :=
(atTop_basis_Ioi.tendsto_iffₓ Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
-#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_at_top'
+#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'
instance : NormedCommRing ℤ :=
{
@@ -866,19 +1340,23 @@ section RingHomIsometric
variable {R₁ : Type _} {R₂ : Type _} {R₃ : Type _}
+#print RingHomIsometric /-
/-- This class states that a ring homomorphism is isometric. This is a sufficient assumption
for a continuous semilinear map to be bounded and this is the main use for this typeclass. -/
class RingHomIsometric [Semiring R₁] [Semiring R₂] [Norm R₁] [Norm R₂] (σ : R₁ →+* R₂) : Prop where
is_iso : ∀ {x : R₁}, ‖σ x‖ = ‖x‖
#align ring_hom_isometric RingHomIsometric
+-/
attribute [simp] RingHomIsometric.is_iso
-variable [SemiNormedRing R₁] [SemiNormedRing R₂] [SemiNormedRing R₃]
+variable [SeminormedRing R₁] [SeminormedRing R₂] [SeminormedRing R₃]
+#print RingHomIsometric.ids /-
instance RingHomIsometric.ids : RingHomIsometric (RingHom.id R₁) :=
⟨fun x => rfl⟩
#align ring_hom_isometric.ids RingHomIsometric.ids
+-/
end RingHomIsometric
@@ -889,19 +1367,22 @@ section Induced
variable {F : Type _} (R S : Type _)
+#print NonUnitalSeminormedRing.induced /-
/-- A non-unital ring homomorphism from an `non_unital_ring` to a `non_unital_semi_normed_ring`
induces a `non_unital_semi_normed_ring` structure on the domain.
See note [reducible non-instances] -/
@[reducible]
-def NonUnitalSemiNormedRing.induced [NonUnitalRing R] [NonUnitalSemiNormedRing S]
- [NonUnitalRingHomClass F R S] (f : F) : NonUnitalSemiNormedRing R :=
+def NonUnitalSeminormedRing.induced [NonUnitalRing R] [NonUnitalSeminormedRing S]
+ [NonUnitalRingHomClass F R S] (f : F) : NonUnitalSeminormedRing R :=
{ SeminormedAddCommGroup.induced R S f with
norm_mul := fun x y => by
unfold norm
exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
-#align non_unital_semi_normed_ring.induced NonUnitalSemiNormedRing.induced
+#align non_unital_semi_normed_ring.induced NonUnitalSeminormedRing.induced
+-/
+#print NonUnitalNormedRing.induced /-
/-- An injective non-unital ring homomorphism from an `non_unital_ring` to a
`non_unital_normed_ring` induces a `non_unital_normed_ring` structure on the domain.
@@ -909,19 +1390,23 @@ See note [reducible non-instances] -/
@[reducible]
def NonUnitalNormedRing.induced [NonUnitalRing R] [NonUnitalNormedRing S]
[NonUnitalRingHomClass F R S] (f : F) (hf : Function.Injective f) : NonUnitalNormedRing R :=
- { NonUnitalSemiNormedRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
+ { NonUnitalSeminormedRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
#align non_unital_normed_ring.induced NonUnitalNormedRing.induced
+-/
+#print SeminormedRing.induced /-
/-- A non-unital ring homomorphism from an `ring` to a `semi_normed_ring` induces a
`semi_normed_ring` structure on the domain.
See note [reducible non-instances] -/
@[reducible]
-def SemiNormedRing.induced [Ring R] [SemiNormedRing S] [NonUnitalRingHomClass F R S] (f : F) :
- SemiNormedRing R :=
- { NonUnitalSemiNormedRing.induced R S f, SeminormedAddCommGroup.induced R S f with }
-#align semi_normed_ring.induced SemiNormedRing.induced
+def SeminormedRing.induced [Ring R] [SeminormedRing S] [NonUnitalRingHomClass F R S] (f : F) :
+ SeminormedRing R :=
+ { NonUnitalSeminormedRing.induced R S f, SeminormedAddCommGroup.induced R S f with }
+#align semi_normed_ring.induced SeminormedRing.induced
+-/
+#print NormedRing.induced /-
/-- An injective non-unital ring homomorphism from an `ring` to a `normed_ring` induces a
`normed_ring` structure on the domain.
@@ -929,20 +1414,24 @@ See note [reducible non-instances] -/
@[reducible]
def NormedRing.induced [Ring R] [NormedRing S] [NonUnitalRingHomClass F R S] (f : F)
(hf : Function.Injective f) : NormedRing R :=
- { NonUnitalSemiNormedRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
+ { NonUnitalSeminormedRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
#align normed_ring.induced NormedRing.induced
+-/
+#print SeminormedCommRing.induced /-
/-- A non-unital ring homomorphism from a `comm_ring` to a `semi_normed_ring` induces a
`semi_normed_comm_ring` structure on the domain.
See note [reducible non-instances] -/
@[reducible]
-def SemiNormedCommRing.induced [CommRing R] [SemiNormedRing S] [NonUnitalRingHomClass F R S]
- (f : F) : SemiNormedCommRing R :=
- { NonUnitalSemiNormedRing.induced R S f, SeminormedAddCommGroup.induced R S f with
+def SeminormedCommRing.induced [CommRing R] [SeminormedRing S] [NonUnitalRingHomClass F R S]
+ (f : F) : SeminormedCommRing R :=
+ { NonUnitalSeminormedRing.induced R S f, SeminormedAddCommGroup.induced R S f with
mul_comm := mul_comm }
-#align semi_normed_comm_ring.induced SemiNormedCommRing.induced
+#align semi_normed_comm_ring.induced SeminormedCommRing.induced
+-/
+#print NormedCommRing.induced /-
/-- An injective non-unital ring homomorphism from an `comm_ring` to a `normed_ring` induces a
`normed_comm_ring` structure on the domain.
@@ -950,9 +1439,11 @@ See note [reducible non-instances] -/
@[reducible]
def NormedCommRing.induced [CommRing R] [NormedRing S] [NonUnitalRingHomClass F R S] (f : F)
(hf : Function.Injective f) : NormedCommRing R :=
- { SemiNormedCommRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
+ { SeminormedCommRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
#align normed_comm_ring.induced NormedCommRing.induced
+-/
+#print NormedDivisionRing.induced /-
/-- An injective non-unital ring homomorphism from an `division_ring` to a `normed_ring` induces a
`normed_division_ring` structure on the domain.
@@ -965,7 +1456,9 @@ def NormedDivisionRing.induced [DivisionRing R] [NormedDivisionRing S] [NonUnita
unfold norm
exact (map_mul f x y).symm ▸ norm_mul (f x) (f y) }
#align normed_division_ring.induced NormedDivisionRing.induced
+-/
+#print NormedField.induced /-
/-- An injective non-unital ring homomorphism from an `field` to a `normed_ring` induces a
`normed_field` structure on the domain.
@@ -975,12 +1468,19 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
(hf : Function.Injective f) : NormedField R :=
{ NormedDivisionRing.induced R S f hf with }
#align normed_field.induced NormedField.induced
+-/
+/- warning: norm_one_class.induced -> NormOneClass.induced is a dubious translation:
+lean 3 declaration is
+ forall {F : Type.{u1}} (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u3} S] [_inst_3 : NormOneClass.{u3} S (SeminormedRing.toHasNorm.{u3} S _inst_2) (AddMonoidWithOne.toOne.{u3} S (AddGroupWithOne.toAddMonoidWithOne.{u3} S (NonAssocRing.toAddGroupWithOne.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))))] [_inst_4 : RingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toHasNorm.{u2} R (SeminormedRing.induced.{u1, u2, u3} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u1, u2, u3} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u3} S (Ring.toNonAssocRing.{u3} S (SeminormedRing.toRing.{u3} S _inst_2))) _inst_4) f)) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1))))
+but is expected to have type
+ forall {F : Type.{u3}} (R : Type.{u2}) (S : Type.{u1}) [_inst_1 : Ring.{u2} R] [_inst_2 : SeminormedRing.{u1} S] [_inst_3 : NormOneClass.{u1} S (SeminormedRing.toNorm.{u1} S _inst_2) (NonAssocRing.toOne.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] [_inst_4 : RingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2)))] (f : F), NormOneClass.{u2} R (SeminormedRing.toNorm.{u2} R (SeminormedRing.induced.{u3, u2, u1} F R S _inst_1 _inst_2 (RingHomClass.toNonUnitalRingHomClass.{u3, u2, u1} F R S (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} S (Ring.toNonAssocRing.{u1} S (SeminormedRing.toRing.{u1} S _inst_2))) _inst_4) f)) (NonAssocRing.toOne.{u2} R (Ring.toNonAssocRing.{u2} R _inst_1))
+Case conversion may be inaccurate. Consider using '#align norm_one_class.induced NormOneClass.inducedₓ'. -/
/-- A ring homomorphism from a `ring R` to a `semi_normed_ring S` which induces the norm structure
`semi_normed_ring.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
-theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SemiNormedRing S]
+theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
[NormOneClass S] [RingHomClass F R S] (f : F) :
- @NormOneClass R (SemiNormedRing.induced R S f).toHasNorm _ :=
+ @NormOneClass R (SeminormedRing.induced R S f).toHasNorm _ :=
{ norm_one := (congr_arg norm (map_one f)).trans norm_one }
#align norm_one_class.induced NormOneClass.induced
@@ -990,22 +1490,30 @@ namespace SubringClass
variable {S R : Type _} [SetLike S R]
-instance toSemiNormedRing [SemiNormedRing R] [SubringClass S R] (s : S) : SemiNormedRing s :=
- SemiNormedRing.induced s R (SubringClass.subtype s)
-#align subring_class.to_semi_normed_ring SubringClass.toSemiNormedRing
+#print SubringClass.toSeminormedRing /-
+instance toSeminormedRing [SeminormedRing R] [SubringClass S R] (s : S) : SeminormedRing s :=
+ SeminormedRing.induced s R (SubringClass.subtype s)
+#align subring_class.to_semi_normed_ring SubringClass.toSeminormedRing
+-/
+#print SubringClass.toNormedRing /-
instance toNormedRing [NormedRing R] [SubringClass S R] (s : S) : NormedRing s :=
NormedRing.induced s R (SubringClass.subtype s) Subtype.val_injective
#align subring_class.to_normed_ring SubringClass.toNormedRing
+-/
-instance toSemiNormedCommRing [SemiNormedCommRing R] [h : SubringClass S R] (s : S) :
- SemiNormedCommRing s :=
- { SubringClass.toSemiNormedRing s with mul_comm := mul_comm }
-#align subring_class.to_semi_normed_comm_ring SubringClass.toSemiNormedCommRing
+#print SubringClass.toSeminormedCommRing /-
+instance toSeminormedCommRing [SeminormedCommRing R] [h : SubringClass S R] (s : S) :
+ SeminormedCommRing s :=
+ { SubringClass.toSeminormedRing s with mul_comm := mul_comm }
+#align subring_class.to_semi_normed_comm_ring SubringClass.toSeminormedCommRing
+-/
+#print SubringClass.toNormedCommRing /-
instance toNormedCommRing [NormedCommRing R] [SubringClass S R] (s : S) : NormedCommRing s :=
{ SubringClass.toNormedRing s with mul_comm := mul_comm }
#align subring_class.to_normed_comm_ring SubringClass.toNormedCommRing
+-/
end SubringClass
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -28,7 +28,7 @@ open Topology BigOperators NNReal ENNReal uniformity Pointwise
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NonUnitalSemiNormedRing (α : Type _) extends HasNorm α, NonUnitalRing α,
+class NonUnitalSemiNormedRing (α : Type _) extends Norm α, NonUnitalRing α,
PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
@@ -36,7 +36,7 @@ class NonUnitalSemiNormedRing (α : Type _) extends HasNorm α, NonUnitalRing α
/-- A seminormed ring is a ring endowed with a seminorm which satisfies the inequality
`‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class SemiNormedRing (α : Type _) extends HasNorm α, Ring α, PseudoMetricSpace α where
+class SemiNormedRing (α : Type _) extends Norm α, Ring α, PseudoMetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align semi_normed_ring SemiNormedRing
@@ -50,7 +50,7 @@ instance (priority := 100) SemiNormedRing.toNonUnitalSemiNormedRing [β : SemiNo
/-- A non-unital normed ring is a not-necessarily-unital ring
endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NonUnitalNormedRing (α : Type _) extends HasNorm α, NonUnitalRing α, MetricSpace α where
+class NonUnitalNormedRing (α : Type _) extends Norm α, NonUnitalRing α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align non_unital_normed_ring NonUnitalNormedRing
@@ -63,14 +63,14 @@ instance (priority := 100) NonUnitalNormedRing.toNonUnitalSemiNormedRing
#align non_unital_normed_ring.to_non_unital_semi_normed_ring NonUnitalNormedRing.toNonUnitalSemiNormedRing
/-- A normed ring is a ring endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NormedRing (α : Type _) extends HasNorm α, Ring α, MetricSpace α where
+class NormedRing (α : Type _) extends Norm α, Ring α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul : ∀ a b, norm (a * b) ≤ norm a * norm b
#align normed_ring NormedRing
/-- A normed division ring is a division ring endowed with a seminorm which satisfies the equality
`‖x y‖ = ‖x‖ ‖y‖`. -/
-class NormedDivisionRing (α : Type _) extends HasNorm α, DivisionRing α, MetricSpace α where
+class NormedDivisionRing (α : Type _) extends Norm α, DivisionRing α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul' : ∀ a b, norm (a * b) = norm a * norm b
#align normed_division_ring NormedDivisionRing
@@ -119,7 +119,7 @@ instance : NormedCommRing PUnit :=
/-- A mixin class with the axiom `‖1‖ = 1`. Many `normed_ring`s and all `normed_field`s satisfy this
axiom. -/
-class NormOneClass (α : Type _) [HasNorm α] [One α] : Prop where
+class NormOneClass (α : Type _) [Norm α] [One α] : Prop where
norm_one : ‖(1 : α)‖ = 1
#align norm_one_class NormOneClass
@@ -642,7 +642,7 @@ theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖
end NormedDivisionRing
/-- A normed field is a field with a norm satisfying ‖x y‖ = ‖x‖ ‖y‖. -/
-class NormedField (α : Type _) extends HasNorm α, Field α, MetricSpace α where
+class NormedField (α : Type _) extends Norm α, Field α, MetricSpace α where
dist_eq : ∀ x y, dist x y = norm (x - y)
norm_mul' : ∀ a b, norm (a * b) = norm a * norm b
#align normed_field NormedField
@@ -868,8 +868,7 @@ variable {R₁ : Type _} {R₂ : Type _} {R₃ : Type _}
/-- This class states that a ring homomorphism is isometric. This is a sufficient assumption
for a continuous semilinear map to be bounded and this is the main use for this typeclass. -/
-class RingHomIsometric [Semiring R₁] [Semiring R₂] [HasNorm R₁] [HasNorm R₂] (σ : R₁ →+* R₂) :
- Prop where
+class RingHomIsometric [Semiring R₁] [Semiring R₂] [Norm R₁] [Norm R₂] (σ : R₁ →+* R₂) : Prop where
is_iso : ∀ {x : R₁}, ‖σ x‖ = ‖x‖
#align ring_hom_isometric RingHomIsometric
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
! This file was ported from Lean 3 source module analysis.normed.field.basic
-! leanprover-community/mathlib commit 335232c774b3d0513ab1531582779dc25d6fdc9a
+! leanprover-community/mathlib commit f06058e64b7e8397234455038f3f8aec83aaba5a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -570,6 +570,19 @@ theorem nnnorm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
map_zpow₀ (nnnormHom : α →*₀ ℝ≥0)
#align nnnorm_zpow nnnorm_zpow
+theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) :=
+ by
+ rw [dist_eq_norm, inv_sub_inv' hz hw, norm_mul, norm_mul, norm_inv, norm_inv, mul_comm ‖z‖⁻¹,
+ mul_assoc, dist_eq_norm', div_eq_mul_inv, mul_inv]
+#align dist_inv_inv₀ dist_inv_inv₀
+
+theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
+ nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) :=
+ by
+ rw [← NNReal.coe_eq]
+ simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
+#align nndist_inv_inv₀ nndist_inv_inv₀
+
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
infinity. TODO: use `bornology.cobounded` instead of `filter.comap has_norm.norm filter.at_top`. -/
theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -998,5 +998,5 @@ instance toNormedCommRing [NormedCommRing R] [SubringClass S R] (s : S) : Normed
end SubringClass
-- Guard again import creep.
-assert_not_exists restrict_scalars
+assert_not_exists RestrictScalars
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -233,7 +233,7 @@ instance Prod.nonUnitalSemiNormedRing [NonUnitalSemiNormedRing β] :
‖x * y‖ = ‖(x.1 * y.1, x.2 * y.2)‖ := rfl
_ = max ‖x.1 * y.1‖ ‖x.2 * y.2‖ := rfl
_ ≤ max (‖x.1‖ * ‖y.1‖) (‖x.2‖ * ‖y.2‖) :=
- max_le_max (norm_mul_le x.1 y.1) (norm_mul_le x.2 y.2)
+ (max_le_max (norm_mul_le x.1 y.1) (norm_mul_le x.2 y.2))
_ = max (‖x.1‖ * ‖y.1‖) (‖y.2‖ * ‖x.2‖) := by simp [mul_comm]
_ ≤ max ‖x.1‖ ‖x.2‖ * max ‖y.2‖ ‖y.1‖ := by
apply max_mul_mul_le_max_mul_max <;> simp [norm_nonneg]
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -24,7 +24,7 @@ variable {α : Type _} {β : Type _} {γ : Type _} {ι : Type _}
open Filter Metric
-open Topology BigOperators NNReal Ennreal uniformity Pointwise
+open Topology BigOperators NNReal ENNReal uniformity Pointwise
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3ade05ac9447ae31a22d2ea5423435e054131240
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
! This file was ported from Lean 3 source module analysis.normed.field.basic
-! leanprover-community/mathlib commit 372edc36e5d2caafdd135769e0136b5a59186834
+! leanprover-community/mathlib commit 335232c774b3d0513ab1531582779dc25d6fdc9a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -168,6 +168,11 @@ instance Pi.normOneClass {ι : Type _} {α : ι → Type _} [Nonempty ι] [Finty
⟨by simp [Pi.norm_def, Finset.sup_const Finset.univ_nonempty]⟩
#align pi.norm_one_class Pi.normOneClass
+instance MulOpposite.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α] :
+ NormOneClass αᵐᵒᵖ :=
+ ⟨@norm_one α _ _ _⟩
+#align mul_opposite.norm_one_class MulOpposite.normOneClass
+
section NonUnitalSemiNormedRing
variable [NonUnitalSemiNormedRing α]
@@ -253,6 +258,13 @@ instance Pi.nonUnitalSemiNormedRing {π : ι → Type _} [Fintype ι]
}
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSemiNormedRing
+instance MulOpposite.nonUnitalSemiNormedRing : NonUnitalSemiNormedRing αᵐᵒᵖ :=
+ { MulOpposite.seminormedAddCommGroup with
+ norm_mul :=
+ MulOpposite.rec' fun x =>
+ MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
+#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSemiNormedRing
+
end NonUnitalSemiNormedRing
section SemiNormedRing
@@ -377,6 +389,10 @@ instance Pi.semiNormedRing {π : ι → Type _} [Fintype ι] [∀ i, SemiNormedR
{ Pi.nonUnitalSemiNormedRing, Pi.seminormedAddCommGroup with }
#align pi.semi_normed_ring Pi.semiNormedRing
+instance MulOpposite.semiNormedRing : SemiNormedRing αᵐᵒᵖ :=
+ { MulOpposite.nonUnitalSemiNormedRing, MulOpposite.seminormedAddCommGroup with }
+#align mul_opposite.semi_normed_ring MulOpposite.semiNormedRing
+
end SemiNormedRing
section NonUnitalNormedRing
@@ -399,6 +415,10 @@ instance Pi.nonUnitalNormedRing {π : ι → Type _} [Fintype ι] [∀ i, NonUni
{ Pi.normedAddCommGroup with norm_mul := norm_mul_le }
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
+instance MulOpposite.nonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
+ { MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
+#align mul_opposite.non_unital_normed_ring MulOpposite.nonUnitalNormedRing
+
end NonUnitalNormedRing
section NormedRing
@@ -427,6 +447,10 @@ instance Pi.normedRing {π : ι → Type _} [Fintype ι] [∀ i, NormedRing (π
{ Pi.normedAddCommGroup with norm_mul := norm_mul_le }
#align pi.normed_ring Pi.normedRing
+instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
+ { MulOpposite.normedAddCommGroup with norm_mul := norm_mul_le }
+#align mul_opposite.normed_ring MulOpposite.normedRing
+
end NormedRing
-- see Note [lower instance priority]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -663,9 +663,9 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
(((continuous_fst.tendsto x).sub tendsto_const_nhds).norm.mul _)
-- Porting note: `show` used to select a goal to work on
rotate_right
- show Tendsto _ _ _
- exact tendsto_const_nhds
- simp⟩
+ · show Tendsto _ _ _
+ exact tendsto_const_nhds
+ · simp⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
-- see Note [lower instance priority]
Int
and Rat
instances (#12235)
Fix a few names and deduplicate the AddCommGroup ℤ
instance
@@ -1111,19 +1111,20 @@ theorem NormedAddCommGroup.tendsto_atTop' [Nonempty α] [SemilatticeSup α] [NoM
(atTop_basis_Ioi.tendsto_iff Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'
-instance Int.normedCommRing : NormedCommRing ℤ :=
- { Int.normedAddCommGroup, Int.instRingInt with
- norm_mul := fun m n => le_of_eq <| by simp only [norm, Int.cast_mul, abs_mul]
- mul_comm := mul_comm }
+instance Int.instNormedCommRing : NormedCommRing ℤ where
+ __ := instCommRing
+ __ := instNormedAddCommGroup
+ norm_mul m n := by simp only [norm, Int.cast_mul, abs_mul, le_rfl]
-instance Int.normOneClass : NormOneClass ℤ :=
+instance Int.instNormOneClass : NormOneClass ℤ :=
⟨by simp [← Int.norm_cast_real]⟩
-instance Rat.normedField : NormedField ℚ :=
- { Rat.normedAddCommGroup, Rat.instField with
- norm_mul' := fun r₁ r₂ => by simp only [norm, Rat.cast_mul, abs_mul] }
+instance Rat.instNormedField : NormedField ℚ where
+ __ := instField
+ __ := instNormedAddCommGroup
+ norm_mul' a b := by simp only [norm, Rat.cast_mul, abs_mul]
-instance Rat.denselyNormedField : DenselyNormedField ℚ where
+instance Rat.instDenselyNormedField : DenselyNormedField ℚ where
lt_norm_lt r₁ r₂ h₀ hr :=
let ⟨q, h⟩ := exists_rat_btwn hr
⟨q, by rwa [← Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -411,7 +411,7 @@ theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤
#align nnnorm_pow_le' nnnorm_pow_le'
/-- If `α` is a seminormed ring with `‖1‖₊ = 1`, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n`.
-See also `nnnorm_pow_le'`.-/
+See also `nnnorm_pow_le'`. -/
theorem nnnorm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n :=
Nat.recOn n (by simp only [Nat.zero_eq, pow_zero, nnnorm_one, le_rfl])
fun k _hk => nnnorm_pow_le' a k.succ_pos
@@ -422,7 +422,8 @@ theorem norm_pow_le' (a : α) {n : ℕ} (h : 0 < n) : ‖a ^ n‖ ≤ ‖a‖ ^
simpa only [NNReal.coe_pow, coe_nnnorm] using NNReal.coe_mono (nnnorm_pow_le' a h)
#align norm_pow_le' norm_pow_le'
-/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`. See also `norm_pow_le'`.-/
+/-- If `α` is a seminormed ring with `‖1‖ = 1`, then `‖a ^ n‖ ≤ ‖a‖ ^ n`.
+See also `norm_pow_le'`. -/
theorem norm_pow_le [NormOneClass α] (a : α) (n : ℕ) : ‖a ^ n‖ ≤ ‖a‖ ^ n :=
Nat.recOn n (by simp only [Nat.zero_eq, pow_zero, norm_one, le_rfl])
fun n _hn => norm_pow_le' a n.succ_pos
Rat
internals in the definition of Field
(#11639)
Soon, there will be NNRat
analogs of the Rat
fields in the definition of Field
. NNRat
is less nicely a structure than Rat
, hence there is a need to reduce the dependency of Field
on the internals of Rat
.
This PR achieves this by restating Field.ratCast_mk'
in terms of Rat.num
, Rat.den
. This requires fixing a few downstream instances.
Reduce the diff of #11203.
Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@@ -1119,7 +1119,7 @@ instance Int.normOneClass : NormOneClass ℤ :=
⟨by simp [← Int.norm_cast_real]⟩
instance Rat.normedField : NormedField ℚ :=
- { Rat.normedAddCommGroup, Rat.field with
+ { Rat.normedAddCommGroup, Rat.instField with
norm_mul' := fun r₁ r₂ => by simp only [norm, Rat.cast_mul, abs_mul] }
instance Rat.denselyNormedField : DenselyNormedField ℚ where
@@ -321,12 +321,12 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type*} [Fintype ι]
}
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
-instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
- { MulOpposite.seminormedAddCommGroup, MulOpposite.instNonUnitalRing α with
- norm_mul :=
- MulOpposite.rec' fun x =>
- MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
-#align mul_opposite.non_unital_semi_normed_ring MulOpposite.nonUnitalSeminormedRing
+instance MulOpposite.instNonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ where
+ __ := instNonUnitalRing
+ __ := instSeminormedAddCommGroup
+ norm_mul := MulOpposite.rec' fun x ↦ MulOpposite.rec' fun y ↦
+ (norm_mul_le y x).trans_eq (mul_comm _ _)
+#align mul_opposite.non_unital_semi_normed_ring MulOpposite.instNonUnitalSeminormedRing
end NonUnitalSeminormedRing
@@ -448,9 +448,10 @@ instance Pi.seminormedRing {π : ι → Type*} [Fintype ι] [∀ i, SeminormedRi
{ Pi.nonUnitalSeminormedRing, Pi.ring with }
#align pi.semi_normed_ring Pi.seminormedRing
-instance MulOpposite.seminormedRing : SeminormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.instRing α with }
-#align mul_opposite.semi_normed_ring MulOpposite.seminormedRing
+instance MulOpposite.instSeminormedRing : SeminormedRing αᵐᵒᵖ where
+ __ := instRing
+ __ := instNonUnitalSeminormedRing
+#align mul_opposite.semi_normed_ring MulOpposite.instSeminormedRing
end SeminormedRing
@@ -474,9 +475,11 @@ instance Pi.nonUnitalNormedRing {π : ι → Type*} [Fintype ι] [∀ i, NonUnit
{ Pi.nonUnitalSeminormedRing, Pi.normedAddCommGroup with }
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
-instance MulOpposite.nonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.normedAddCommGroup with }
-#align mul_opposite.non_unital_normed_ring MulOpposite.nonUnitalNormedRing
+instance MulOpposite.instNonUnitalNormedRing : NonUnitalNormedRing αᵐᵒᵖ where
+ __ := instNonUnitalRing
+ __ := instNonUnitalSeminormedRing
+ __ := instNormedAddCommGroup
+#align mul_opposite.non_unital_normed_ring MulOpposite.instNonUnitalNormedRing
end NonUnitalNormedRing
@@ -506,9 +509,11 @@ instance Pi.normedRing {π : ι → Type*} [Fintype ι] [∀ i, NormedRing (π i
{ Pi.seminormedRing, Pi.normedAddCommGroup with }
#align pi.normed_ring Pi.normedRing
-instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
- { MulOpposite.seminormedRing, MulOpposite.normedAddCommGroup with }
-#align mul_opposite.normed_ring MulOpposite.normedRing
+instance MulOpposite.instNormedRing : NormedRing αᵐᵒᵖ where
+ __ := instRing
+ __ := instSeminormedRing
+ __ := instNormedAddCommGroup
+#align mul_opposite.normed_ring MulOpposite.instNormedRing
end NormedRing
@@ -531,8 +536,9 @@ instance Pi.nonUnitalSeminormedCommRing {π : ι → Type*} [Fintype ι]
[∀ i, NonUnitalSeminormedCommRing (π i)] : NonUnitalSeminormedCommRing (∀ i, π i) :=
{ Pi.nonUnitalSeminormedRing, Pi.nonUnitalCommRing with }
-instance MulOpposite.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.instNonUnitalCommRing α with }
+instance MulOpposite.instNonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing αᵐᵒᵖ where
+ __ := instNonUnitalSeminormedRing
+ __ := instNonUnitalCommRing
end NonUnitalSeminormedCommRing
@@ -569,8 +575,9 @@ instance Pi.nonUnitalNormedCommRing {π : ι → Type*} [Fintype ι]
[∀ i, NonUnitalNormedCommRing (π i)] : NonUnitalNormedCommRing (∀ i, π i) :=
{ Pi.nonUnitalSeminormedCommRing, Pi.normedAddCommGroup with }
-instance MulOpposite.nonUnitalNormedCommRing : NonUnitalNormedCommRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.normedAddCommGroup with }
+instance MulOpposite.instNonUnitalNormedCommRing : NonUnitalNormedCommRing αᵐᵒᵖ where
+ __ := instNonUnitalNormedRing
+ __ := instNonUnitalSeminormedCommRing
end NonUnitalNormedCommRing
@@ -592,8 +599,9 @@ instance Pi.seminormedCommRing {π : ι → Type*} [Fintype ι] [∀ i, Seminorm
SeminormedCommRing (∀ i, π i) :=
{ Pi.nonUnitalSeminormedCommRing, Pi.ring with }
-instance MulOpposite.seminormedCommRing : SeminormedCommRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.instRing α with }
+instance MulOpposite.instSeminormedCommRing : SeminormedCommRing αᵐᵒᵖ where
+ __ := instSeminormedRing
+ __ := instNonUnitalSeminormedCommRing
end SeminormedCommRing
@@ -627,8 +635,9 @@ instance Pi.normedCommutativeRing {π : ι → Type*} [Fintype ι] [∀ i, Norme
NormedCommRing (∀ i, π i) :=
{ Pi.seminormedCommRing, Pi.normedAddCommGroup with }
-instance MulOpposite.normedCommRing : NormedCommRing αᵐᵒᵖ :=
- { MulOpposite.seminormedCommRing, MulOpposite.normedAddCommGroup with }
+instance MulOpposite.instNormedCommRing : NormedCommRing αᵐᵒᵖ where
+ __ := instNormedRing
+ __ := instSeminormedCommRing
end NormedCommRing
We change the following field in the definition of an additive commutative monoid:
nsmul_succ : ∀ (n : ℕ) (x : G),
- AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+ AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
where the latter is more natural
We adjust the definitions of ^
in monoids, groups, etc.
Originally there was a warning comment about why this natural order was preferred
use
x * npowRec n x
and notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
is blocked, to avoid deep recursion issues.
but it seems to no longer apply.
Remarks on the PR :
pow_succ
and pow_succ'
have switched their meanings.Ideal.IsPrime.mul_mem_pow
which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul
.@@ -406,7 +406,7 @@ See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
| 1, _ => by simp only [pow_one, le_rfl]
| n + 2, _ => by
- simpa only [pow_succ _ (n + 1)] using
+ simpa only [pow_succ' _ (n + 1)] using
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' a n.succ_pos) _)
#align nnnorm_pow_le' nnnorm_pow_le'
mul
-div
cancellation lemmas (#11530)
Lemma names around cancellation of multiplication and division are a mess.
This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero
lemma name, the Group
lemma, the AddGroup
lemma name).
| Statement | New name | Old name | |
@@ -975,7 +975,7 @@ theorem punctured_nhds_neBot (x : α) : NeBot (𝓝[≠] x) := by
rintro ε ε0
rcases exists_norm_lt α ε0 with ⟨b, hb0, hbε⟩
refine' ⟨x + b, mt (Set.mem_singleton_iff.trans add_right_eq_self).1 <| norm_pos_iff.1 hb0, _⟩
- rwa [dist_comm, dist_eq_norm, add_sub_cancel']
+ rwa [dist_comm, dist_eq_norm, add_sub_cancel_left]
#align normed_field.punctured_nhds_ne_bot NormedField.punctured_nhds_neBot
@[instance]
@@ -322,7 +322,7 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type*} [Fintype ι]
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
- { MulOpposite.seminormedAddCommGroup, MulOpposite.nonUnitalRing α with
+ { MulOpposite.seminormedAddCommGroup, MulOpposite.instNonUnitalRing α with
norm_mul :=
MulOpposite.rec' fun x =>
MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
@@ -449,7 +449,7 @@ instance Pi.seminormedRing {π : ι → Type*} [Fintype ι] [∀ i, SeminormedRi
#align pi.semi_normed_ring Pi.seminormedRing
instance MulOpposite.seminormedRing : SeminormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.ring α with }
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.instRing α with }
#align mul_opposite.semi_normed_ring MulOpposite.seminormedRing
end SeminormedRing
@@ -532,7 +532,7 @@ instance Pi.nonUnitalSeminormedCommRing {π : ι → Type*} [Fintype ι]
{ Pi.nonUnitalSeminormedRing, Pi.nonUnitalCommRing with }
instance MulOpposite.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.nonUnitalCommRing α with }
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.instNonUnitalCommRing α with }
end NonUnitalSeminormedCommRing
@@ -593,7 +593,7 @@ instance Pi.seminormedCommRing {π : ι → Type*} [Fintype ι] [∀ i, Seminorm
{ Pi.nonUnitalSeminormedCommRing, Pi.ring with }
instance MulOpposite.seminormedCommRing : SeminormedCommRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.ring α with }
+ { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.instRing α with }
end SeminormedCommRing
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -643,7 +643,7 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
calc
‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1 * (e.2 - x.2) + (e.1 - x.1) * x.2‖ := by
rw [_root_.mul_sub, _root_.sub_mul, sub_add_sub_cancel]
- -- porting note: `ENNReal.{mul_sub, sub_mul}` should be protected
+ -- Porting note: `ENNReal.{mul_sub, sub_mul}` should be protected
_ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
refine squeeze_zero (fun e => norm_nonneg _) this ?_
@@ -859,7 +859,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
‖e⁻¹ - r⁻¹‖ = ‖r‖⁻¹ * ‖r - e‖ * ‖e‖⁻¹ := by
rw [← norm_inv, ← norm_inv, ← norm_mul, ← norm_mul, _root_.mul_sub, _root_.sub_mul,
mul_assoc _ e, inv_mul_cancel r0, mul_inv_cancel e0, one_mul, mul_one]
- -- porting note: `ENNReal.{mul_sub, sub_mul}` should be `protected`
+ -- Porting note: `ENNReal.{mul_sub, sub_mul}` should be `protected`
_ = ‖r - e‖ / ‖r‖ / ‖e‖ := by field_simp [mul_comm]
_ ≤ ‖r - e‖ / ‖r‖ / ε := by gcongr
refine' squeeze_zero' (eventually_of_forall fun _ => norm_nonneg _) this _
@@ -1075,7 +1075,7 @@ theorem nnnorm_eq (x : ℝ≥0) : ‖(x : ℝ)‖₊ = x :=
end NNReal
-@[simp 1001] -- porting note: increase priority so that the LHS doesn't simplify
+@[simp 1001] -- Porting note: increase priority so that the LHS doesn't simplify
theorem norm_norm [SeminormedAddCommGroup α] (x : α) : ‖‖x‖‖ = ‖x‖ :=
Real.norm_of_nonneg (norm_nonneg _)
#align norm_norm norm_norm
@@ -1256,7 +1256,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
theorem NormOneClass.induced {F : Type*} (R S : Type*) [Ring R] [SeminormedRing S]
[NormOneClass S] [FunLike F R S] [RingHomClass F R S] (f : F) :
@NormOneClass R (SeminormedRing.induced R S f).toNorm _ :=
- -- porting note: is this `let` a bad idea somehow?
+ -- Porting note: is this `let` a bad idea somehow?
let _ : SeminormedRing R := SeminormedRing.induced R S f
{ norm_one := (congr_arg norm (map_one f)).trans norm_one }
#align norm_one_class.induced NormOneClass.induced
@@ -1064,7 +1064,7 @@ namespace NNReal
open NNReal
--- porting note: removed `@[simp]` because `simp` can prove this
+-- porting note (#10618): removed `@[simp]` because `simp` can prove this
theorem norm_eq (x : ℝ≥0) : ‖(x : ℝ)‖ = x := by rw [Real.norm_eq_abs, x.abs_eq]
#align nnreal.norm_eq NNReal.norm_eq
in finite-dimensional spaces over a complete field. This is used to showing that immersions are open. NB: this result is false for general continuous maps (only surjectivity is open there).
From the sphere-eversion project.
@@ -1117,6 +1117,7 @@ instance Rat.denselyNormedField : DenselyNormedField ℚ where
lt_norm_lt r₁ r₂ h₀ hr :=
let ⟨q, h⟩ := exists_rat_btwn hr
⟨q, by rwa [← Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
+
section RingHomIsometric
variable {R₁ : Type*} {R₂ : Type*} {R₃ : Type*}
The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun
instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike
is EquivLike
, since that has a custom coe_injective'
field that is easier to implement. All other classes should take FunLike
or EquivLike
as a parameter.
Previously, morphism classes would be Type
-valued and extend FunLike
:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
After this PR, they should be Prop
-valued and take FunLike
as a parameter:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
[FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
(Note that A B
stay marked as outParam
even though they are not purely required to be so due to the FunLike
parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam
is slightly faster.)
Similarly, MyEquivClass
should take EquivLike
as a parameter.
As a result, every mention of [MyHomClass F A B]
should become [FunLike F A B] [MyHomClass F A B]
.
While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul
is more expensive. This is due to suboptimal processing of arguments. For example:
variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)
theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y
example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _
Before this PR, applying map_mul f
gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Since M
and N
are out_param
s, [MulHomClass F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found.
After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Now [FunLike F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found, before trying MulHomClass F M N
which fails. Since the Mul
hierarchy is very big, this can be slow to fail, especially when there is no such Mul
instance.
A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul
to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N]
because MulHomClass
fails or succeeds much faster than the others.
As a consequence, the simpNF
linter is much slower since by design it tries and fails to apply many map_
lemmas. The same issue occurs a few times in existing calls to simp [map_mul]
, where map_mul
is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.
simp
not firing sometimesThis affects map_smulₛₗ
and related definitions. For simp
lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw
can find every argument to map_smulₛₗ
successfully but simp
can't: leanprover/lean4#3701.
Especially in the category theory library, we might sometimes have a type A
which is also accessible as a synonym (Bundled A hA).1
. Instance synthesis doesn't always work if we have f : A →* B
but x * y : (Bundled A hA).1
or vice versa. This seems to be mostly fixed by keeping A B
as outParam
s in MulHomClass F A B
. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1
instead of using the syntax in the discrimination tree.)
The timeouts can be worked around for now by specifying which map_mul
we mean, either as map_mul f
for some explicit f
, or as e.g. MonoidHomClass.map_mul
.
map_smulₛₗ
not firing as simp
lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ
a simp
lemma instead of the generic map_smulₛₗ
. Writing simp [map_smulₛₗ _]
also works.
Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -1144,6 +1144,7 @@ end RingHomIsometric
section Induced
variable {F : Type*} (R S : Type*)
+variable [FunLike F R S]
/-- A non-unital ring homomorphism from a `NonUnitalRing` to a `NonUnitalSeminormedRing`
induces a `NonUnitalSeminormedRing` structure on the domain.
@@ -1252,7 +1253,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
/-- A ring homomorphism from a `Ring R` to a `SeminormedRing S` which induces the norm structure
`SeminormedRing.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
theorem NormOneClass.induced {F : Type*} (R S : Type*) [Ring R] [SeminormedRing S]
- [NormOneClass S] [RingHomClass F R S] (f : F) :
+ [NormOneClass S] [FunLike F R S] [RingHomClass F R S] (f : F) :
@NormOneClass R (SeminormedRing.induced R S f).toNorm _ :=
-- porting note: is this `let` a bad idea somehow?
let _ : SeminormedRing R := SeminormedRing.induced R S f
@@ -7,7 +7,7 @@ import Mathlib.Algebra.Algebra.NonUnitalSubalgebra
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Analysis.Normed.Group.Basic
import Mathlib.GroupTheory.OrderOfElement
-import Mathlib.Topology.Instances.ENNReal
+import Mathlib.Topology.Instances.NNReal
import Mathlib.Topology.MetricSpace.DilationEquiv
#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"f06058e64b7e8397234455038f3f8aec83aaba5a"
NonUnital(Semi)NormedCommRing
(#8665)
adds instances for the new NonUnital(Semi)NormedCommRing
classes, and also adds some missing instances to Analysis.Normed.Field.Basic
.
This gives us our first example of an actually non-unital commutative C⋆-algebra: C₀(X, ℂ)
where X
is a locally compact, noncompact Hausdorff space.
@@ -3,6 +3,7 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-/
+import Mathlib.Algebra.Algebra.NonUnitalSubalgebra
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Analysis.Normed.Group.Basic
import Mathlib.GroupTheory.OrderOfElement
@@ -266,6 +267,21 @@ theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖
exact norm_mul_le y x
#align mul_right_bound mulRight_bound
+/-- A non-unital subalgebra of a non-unital seminormed ring is also a non-unital seminormed ring,
+with the restriction of the norm. -/
+instance NonUnitalSubalgebra.nonUnitalSeminormedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*}
+ [NonUnitalSeminormedRing E] [Module 𝕜 E] (s : NonUnitalSubalgebra 𝕜 E) :
+ NonUnitalSeminormedRing s :=
+ { s.toSubmodule.seminormedAddCommGroup, s.toNonUnitalRing with
+ norm_mul := fun a b => norm_mul_le a.1 b.1 }
+
+/-- A non-unital subalgebra of a non-unital normed ring is also a non-unital normed ring, with the
+restriction of the norm. -/
+instance NonUnitalSubalgebra.nonUnitalNormedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*}
+ [NonUnitalNormedRing E] [Module 𝕜 E] (s : NonUnitalSubalgebra 𝕜 E) : NonUnitalNormedRing s :=
+ { s.nonUnitalSeminormedRing with
+ eq_of_dist_eq_zero := eq_of_dist_eq_zero }
+
instance ULift.nonUnitalSeminormedRing : NonUnitalSeminormedRing (ULift α) :=
{ ULift.seminormedAddCommGroup, ULift.nonUnitalRing with
norm_mul := fun x y => (norm_mul_le x.down y.down : _) }
@@ -318,18 +334,15 @@ section SeminormedRing
variable [SeminormedRing α]
-/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
-
-See note [implicit instance arguments]. -/
+/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the
+norm. -/
instance Subalgebra.seminormedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [SeminormedRing E]
[Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : SeminormedRing s :=
{ s.toSubmodule.seminormedAddCommGroup, s.toRing with
norm_mul := fun a b => norm_mul_le a.1 b.1 }
#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
-/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
-
-See note [implicit instance arguments]. -/
+/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm. -/
instance Subalgebra.normedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [NormedRing E]
[Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : NormedRing s :=
{ s.seminormedRing with
@@ -522,10 +535,25 @@ instance MulOpposite.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing
{ MulOpposite.nonUnitalSeminormedRing, MulOpposite.nonUnitalCommRing α with }
end NonUnitalSeminormedCommRing
+
section NonUnitalNormedCommRing
variable [NonUnitalNormedCommRing α]
+/-- A non-unital subalgebra of a non-unital seminormed commutative ring is also a non-unital
+seminormed commutative ring, with the restriction of the norm. -/
+instance NonUnitalSubalgebra.nonUnitalSeminormedCommRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*}
+ [NonUnitalSeminormedCommRing E] [Module 𝕜 E] (s : NonUnitalSubalgebra 𝕜 E) :
+ NonUnitalSeminormedCommRing s :=
+ { s.nonUnitalSeminormedRing, s.toNonUnitalCommRing with }
+
+/-- A non-unital subalgebra of a non-unital normed commutative ring is also a non-unital normed
+commutative ring, with the restriction of the norm. -/
+instance NonUnitalSubalgebra.nonUnitalNormedCommRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*}
+ [NonUnitalNormedCommRing E] [Module 𝕜 E] (s : NonUnitalSubalgebra 𝕜 E) :
+ NonUnitalNormedCommRing s :=
+ { s.nonUnitalSeminormedCommRing, s.nonUnitalNormedRing with }
+
instance ULift.nonUnitalNormedCommRing : NonUnitalNormedCommRing (ULift α) :=
{ ULift.nonUnitalSeminormedCommRing, ULift.normedAddCommGroup with }
@@ -546,6 +574,64 @@ instance MulOpposite.nonUnitalNormedCommRing : NonUnitalNormedCommRing αᵐᵒ
end NonUnitalNormedCommRing
+section SeminormedCommRing
+
+variable [SeminormedCommRing α]
+
+instance ULift.seminormedCommRing : SeminormedCommRing (ULift α) :=
+ { ULift.nonUnitalSeminormedRing, ULift.commRing with }
+
+/-- Seminormed commutative ring structure on the product of two seminormed commutative rings,
+ using the sup norm. -/
+instance Prod.seminormedCommRing [SeminormedCommRing β] : SeminormedCommRing (α × β) :=
+ { Prod.nonUnitalSeminormedCommRing, instCommRing with }
+
+/-- Seminormed commutative ring structure on the product of finitely many seminormed commutative
+rings, using the sup norm. -/
+instance Pi.seminormedCommRing {π : ι → Type*} [Fintype ι] [∀ i, SeminormedCommRing (π i)] :
+ SeminormedCommRing (∀ i, π i) :=
+ { Pi.nonUnitalSeminormedCommRing, Pi.ring with }
+
+instance MulOpposite.seminormedCommRing : SeminormedCommRing αᵐᵒᵖ :=
+ { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.ring α with }
+
+end SeminormedCommRing
+
+section NormedCommRing
+
+/-- A subalgebra of a seminormed commutative ring is also a seminormed commutative ring, with the
+restriction of the norm. -/
+instance Subalgebra.seminormedCommRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [SeminormedCommRing E]
+ [Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : SeminormedCommRing s :=
+ { s.seminormedRing, s.toCommRing with }
+
+/-- A subalgebra of a normed commutative ring is also a normed commutative ring, with the
+restriction of the norm. -/
+instance Subalgebra.normedCommRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [NormedCommRing E]
+ [Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : NormedCommRing s :=
+ { s.seminormedCommRing, s.normedRing with }
+
+variable [NormedCommRing α]
+
+instance ULift.normedCommRing : NormedCommRing (ULift α) :=
+ { ULift.normedRing (α := α), ULift.seminormedCommRing with }
+
+/-- Normed commutative ring structure on the product of two normed commutative rings, using the sup
+norm. -/
+instance Prod.normedCommRing [NormedCommRing β] : NormedCommRing (α × β) :=
+ { nonUnitalNormedRing, instCommRing with }
+
+/-- Normed commutative ring structure on the product of finitely many normed commutative rings,
+using the sup norm. -/
+instance Pi.normedCommutativeRing {π : ι → Type*} [Fintype ι] [∀ i, NormedCommRing (π i)] :
+ NormedCommRing (∀ i, π i) :=
+ { Pi.seminormedCommRing, Pi.normedAddCommGroup with }
+
+instance MulOpposite.normedCommRing : NormedCommRing αᵐᵒᵖ :=
+ { MulOpposite.seminormedCommRing, MulOpposite.normedAddCommGroup with }
+
+end NormedCommRing
+
-- see Note [lower instance priority]
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
This lemma already existed, but with an impractical spelling.
From LeanAPAP
@@ -5,6 +5,7 @@ Authors: Patrick Massot, Johannes Hölzl
-/
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Analysis.Normed.Group.Basic
+import Mathlib.GroupTheory.OrderOfElement
import Mathlib.Topology.Instances.ENNReal
import Mathlib.Topology.MetricSpace.DilationEquiv
@@ -579,7 +580,7 @@ instance (priority := 100) semi_normed_top_ring [NonUnitalSeminormedRing α] : T
section NormedDivisionRing
-variable [NormedDivisionRing α]
+variable [NormedDivisionRing α] {a : α}
@[simp]
theorem norm_mul (a b : α) : ‖a * b‖ = ‖a‖ * ‖b‖ :=
@@ -786,15 +787,13 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
where
#align normed_division_ring.to_topological_division_ring NormedDivisionRing.to_topologicalDivisionRing
-theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
- ‖φ x‖ = 1 := by
- rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
- exacts [norm_nonneg _, zero_le_one, k.ne_zero]
-#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
+protected lemma IsOfFinOrder.norm_eq_one (ha : IsOfFinOrder a) : ‖a‖ = 1 :=
+ ((normHom : α →*₀ ℝ).toMonoidHom.isOfFinOrder ha).eq_one $ norm_nonneg _
+#align norm_one_of_pow_eq_one IsOfFinOrder.norm_eq_one
-theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
- norm_map_one_of_pow_eq_one (MonoidHom.id α) h
-#align norm_one_of_pow_eq_one norm_one_of_pow_eq_one
+example [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
+ ‖φ x‖ = 1 := (φ.isOfFinOrder <| isOfFinOrder_iff_pow_eq_one.2 ⟨_, k.2, h⟩).norm_eq_one
+#noalign norm_map_one_of_pow_eq_one
end NormedDivisionRing
The names for lemmas about monotonicity of (a ^ ·)
and (· ^ n)
were a mess. This PR tidies up everything related by following the naming convention for (a * ·)
and (· * b)
. Namely, (a ^ ·)
is pow_right
and (· ^ n)
is pow_left
in lemma names. All lemma renames follow the corresponding multiplication lemma names closely.
Algebra.GroupPower.Order
pow_mono
→ pow_right_mono
pow_le_pow
→ pow_le_pow_right
pow_le_pow_of_le_left
→ pow_le_pow_left
pow_lt_pow_of_lt_left
→ pow_lt_pow_left
strictMonoOn_pow
→ pow_left_strictMonoOn
pow_strictMono_right
→ pow_right_strictMono
pow_lt_pow
→ pow_lt_pow_right
pow_lt_pow_iff
→ pow_lt_pow_iff_right
pow_le_pow_iff
→ pow_le_pow_iff_right
self_lt_pow
→ lt_self_pow
strictAnti_pow
→ pow_right_strictAnti
pow_lt_pow_iff_of_lt_one
→ pow_lt_pow_iff_right_of_lt_one
pow_lt_pow_of_lt_one
→ pow_lt_pow_right_of_lt_one
lt_of_pow_lt_pow
→ lt_of_pow_lt_pow_left
le_of_pow_le_pow
→ le_of_pow_le_pow_left
pow_lt_pow₀
→ pow_lt_pow_right₀
Algebra.GroupPower.CovariantClass
pow_le_pow_of_le_left'
→ pow_le_pow_left'
nsmul_le_nsmul_of_le_right
→ nsmul_le_nsmul_right
pow_lt_pow'
→ pow_lt_pow_right'
nsmul_lt_nsmul
→ nsmul_lt_nsmul_left
pow_strictMono_left
→ pow_right_strictMono'
nsmul_strictMono_right
→ nsmul_left_strictMono
StrictMono.pow_right'
→ StrictMono.pow_const
StrictMono.nsmul_left
→ StrictMono.const_nsmul
pow_strictMono_right'
→ pow_left_strictMono
nsmul_strictMono_left
→ nsmul_right_strictMono
Monotone.pow_right
→ Monotone.pow_const
Monotone.nsmul_left
→ Monotone.const_nsmul
lt_of_pow_lt_pow'
→ lt_of_pow_lt_pow_left'
lt_of_nsmul_lt_nsmul
→ lt_of_nsmul_lt_nsmul_right
pow_le_pow'
→ pow_le_pow_right'
nsmul_le_nsmul
→ nsmul_le_nsmul_left
pow_le_pow_of_le_one'
→ pow_le_pow_right_of_le_one'
nsmul_le_nsmul_of_nonpos
→ nsmul_le_nsmul_left_of_nonpos
le_of_pow_le_pow'
→ le_of_pow_le_pow_left'
le_of_nsmul_le_nsmul'
→ le_of_nsmul_le_nsmul_right'
pow_le_pow_iff'
→ pow_le_pow_iff_right'
nsmul_le_nsmul_iff
→ nsmul_le_nsmul_iff_left
pow_lt_pow_iff'
→ pow_lt_pow_iff_right'
nsmul_lt_nsmul_iff
→ nsmul_lt_nsmul_iff_left
Data.Nat.Pow
Nat.pow_lt_pow_of_lt_left
→ Nat.pow_lt_pow_left
Nat.pow_le_iff_le_left
→ Nat.pow_le_pow_iff_left
Nat.pow_lt_iff_lt_left
→ Nat.pow_lt_pow_iff_left
pow_le_pow_iff_left
pow_lt_pow_iff_left
pow_right_injective
pow_right_inj
Nat.pow_le_pow_left
to have the correct name since Nat.pow_le_pow_of_le_left
is in Std.Nat.pow_le_pow_right
to have the correct name since Nat.pow_le_pow_of_le_right
is in Std.self_le_pow
was a duplicate of le_self_pow
.Nat.pow_lt_pow_of_lt_right
is defeq to pow_lt_pow_right
.Nat.pow_right_strictMono
is defeq to pow_right_strictMono
.Nat.pow_le_iff_le_right
is defeq to pow_le_pow_iff_right
.Nat.pow_lt_iff_lt_right
is defeq to pow_lt_pow_iff_right
.0 < n
or 1 ≤ n
to n ≠ 0
.Nat
lemmas have been protected
.@@ -789,7 +789,7 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 := by
rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
- exacts [norm_nonneg _, zero_le_one, k.pos]
+ exacts [norm_nonneg _, zero_le_one, k.ne_zero]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
NonUnital(Semi)NormedCommRing
(#8664)
This adds commutative versions of the existing NonUnital(Semi)NormedRing
classes. This is essential for talking about, for example, non-unital commutative C⋆-algebras.
@@ -101,6 +101,24 @@ instance (priority := 100) NormedRing.toNonUnitalNormedRing [β : NormedRing α]
{ β with }
#align normed_ring.to_non_unital_normed_ring NormedRing.toNonUnitalNormedRing
+/-- A non-unital seminormed commutative ring is a non-unital commutative ring endowed with a
+seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
+class NonUnitalSeminormedCommRing (α : Type*) extends NonUnitalSeminormedRing α where
+ /-- Multiplication is commutative. -/
+ mul_comm : ∀ x y : α, x * y = y * x
+
+/-- A non-unital normed commutative ring is a non-unital commutative ring endowed with a
+norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
+class NonUnitalNormedCommRing (α : Type*) extends NonUnitalNormedRing α where
+ /-- Multiplication is commutative. -/
+ mul_comm : ∀ x y : α, x * y = y * x
+
+-- see Note [lower instance priority]
+/-- A non-unital normed commutative ring is a non-unital seminormed commutative ring. -/
+instance (priority := 100) NonUnitalNormedCommRing.toNonUnitalSeminormedCommRing
+ [β : NonUnitalNormedCommRing α] : NonUnitalSeminormedCommRing α :=
+ { β with }
+
/-- A seminormed commutative ring is a commutative ring endowed with a seminorm which satisfies
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
class SeminormedCommRing (α : Type*) extends SeminormedRing α where
@@ -115,6 +133,18 @@ class NormedCommRing (α : Type*) extends NormedRing α where
mul_comm : ∀ x y : α, x * y = y * x
#align normed_comm_ring NormedCommRing
+-- see Note [lower instance priority]
+/-- A seminormed commutative ring is a non-unital seminormed commutative ring. -/
+instance (priority := 100) SeminormedCommRing.toNonUnitalSeminormedCommRing
+ [β : SeminormedCommRing α] : NonUnitalSeminormedCommRing α :=
+ { β with }
+
+-- see Note [lower instance priority]
+/-- A normed commutative ring is a non-unital normed commutative ring. -/
+instance (priority := 100) NormedCommRing.toNonUnitalNormedCommRing
+ [β : NormedCommRing α] : NonUnitalNormedCommRing α :=
+ { β with }
+
-- see Note [lower instance priority]
/-- A normed commutative ring is a seminormed commutative ring. -/
instance (priority := 100) NormedCommRing.toSeminormedCommRing [β : NormedCommRing α] :
@@ -147,6 +177,11 @@ theorem NormOneClass.nontrivial (α : Type*) [SeminormedAddCommGroup α] [One α
nontrivial_of_ne 0 1 <| ne_of_apply_ne norm <| by simp
#align norm_one_class.nontrivial NormOneClass.nontrivial
+-- see Note [lower instance priority]
+instance (priority := 100) NonUnitalSeminormedCommRing.toNonUnitalCommRing
+ [β : NonUnitalSeminormedCommRing α] : NonUnitalCommRing α :=
+ { β with }
+
-- see Note [lower instance priority]
instance (priority := 100) SeminormedCommRing.toCommRing [β : SeminormedCommRing α] : CommRing α :=
{ β with }
@@ -463,6 +498,53 @@ instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
end NormedRing
+section NonUnitalSeminormedCommRing
+
+variable [NonUnitalSeminormedCommRing α]
+
+instance ULift.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing (ULift α) :=
+ { ULift.nonUnitalSeminormedRing, ULift.nonUnitalCommRing with }
+
+/-- Non-unital seminormed commutative ring structure on the product of two non-unital seminormed
+commutative rings, using the sup norm. -/
+instance Prod.nonUnitalSeminormedCommRing [NonUnitalSeminormedCommRing β] :
+ NonUnitalSeminormedCommRing (α × β) :=
+ { nonUnitalSeminormedRing, instNonUnitalCommRing with }
+
+/-- Non-unital seminormed commutative ring structure on the product of finitely many non-unital
+seminormed commutative rings, using the sup norm. -/
+instance Pi.nonUnitalSeminormedCommRing {π : ι → Type*} [Fintype ι]
+ [∀ i, NonUnitalSeminormedCommRing (π i)] : NonUnitalSeminormedCommRing (∀ i, π i) :=
+ { Pi.nonUnitalSeminormedRing, Pi.nonUnitalCommRing with }
+
+instance MulOpposite.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing αᵐᵒᵖ :=
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.nonUnitalCommRing α with }
+
+end NonUnitalSeminormedCommRing
+section NonUnitalNormedCommRing
+
+variable [NonUnitalNormedCommRing α]
+
+instance ULift.nonUnitalNormedCommRing : NonUnitalNormedCommRing (ULift α) :=
+ { ULift.nonUnitalSeminormedCommRing, ULift.normedAddCommGroup with }
+
+/-- Non-unital normed commutative ring structure on the product of two non-unital normed
+commutative rings, using the sup norm. -/
+instance Prod.nonUnitalNormedCommRing [NonUnitalNormedCommRing β] :
+ NonUnitalNormedCommRing (α × β) :=
+ { Prod.nonUnitalSeminormedCommRing, Prod.normedAddCommGroup with }
+
+/-- Normed commutative ring structure on the product of finitely many non-unital normed
+commutative rings, using the sup norm. -/
+instance Pi.nonUnitalNormedCommRing {π : ι → Type*} [Fintype ι]
+ [∀ i, NonUnitalNormedCommRing (π i)] : NonUnitalNormedCommRing (∀ i, π i) :=
+ { Pi.nonUnitalSeminormedCommRing, Pi.normedAddCommGroup with }
+
+instance MulOpposite.nonUnitalNormedCommRing : NonUnitalNormedCommRing αᵐᵒᵖ :=
+ { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.normedAddCommGroup with }
+
+end NonUnitalNormedCommRing
+
-- see Note [lower instance priority]
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
@@ -1021,6 +1103,23 @@ def NormedRing.induced [Ring R] [NormedRing S] [NonUnitalRingHomClass F R S] (f
{ NonUnitalSeminormedRing.induced R S f, NormedAddCommGroup.induced R S f hf, ‹Ring R› with }
#align normed_ring.induced NormedRing.induced
+/-- A non-unital ring homomorphism from a `NonUnitalCommRing` to a `NonUnitalSeminormedCommRing`
+induces a `NonUnitalSeminormedCommRing` structure on the domain.
+
+See note [reducible non-instances] -/
+@[reducible]
+def NonUnitalSeminormedCommRing.induced [NonUnitalCommRing R] [NonUnitalSeminormedCommRing S]
+ [NonUnitalRingHomClass F R S] (f : F) : NonUnitalSeminormedCommRing R :=
+ { NonUnitalSeminormedRing.induced R S f, ‹NonUnitalCommRing R› with }
+
+/-- An injective non-unital ring homomorphism from a `NonUnitalCommRing` to a
+`NonUnitalNormedCommRing` induces a `NonUnitalNormedCommRing` structure on the domain.
+
+See note [reducible non-instances] -/
+@[reducible]
+def NonUnitalNormedCommRing.induced [NonUnitalCommRing R] [NonUnitalNormedCommRing S]
+ [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Injective f) : NonUnitalNormedCommRing R :=
+ { NonUnitalNormedRing.induced R S f hf, ‹NonUnitalCommRing R› with }
/-- A non-unital ring homomorphism from a `CommRing` to a `SeminormedRing` induces a
`SeminormedCommRing` structure on the domain.
@@ -765,12 +765,12 @@ instance (priority := 100) NormedField.toNormedCommRing : NormedCommRing α :=
@[simp]
theorem norm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖ = ∏ b in s, ‖f b‖ :=
- (normHom.toMonoidHom : α →* ℝ).map_prod f s
+ map_prod normHom.toMonoidHom f s
#align norm_prod norm_prod
@[simp]
theorem nnnorm_prod (s : Finset β) (f : β → α) : ‖∏ b in s, f b‖₊ = ∏ b in s, ‖f b‖₊ :=
- (nnnormHom.toMonoidHom : α →* ℝ≥0).map_prod f s
+ map_prod nnnormHom.toMonoidHom f s
#align nnnorm_prod nnnorm_prod
end NormedField
@@ -949,7 +949,7 @@ instance Rat.normedField : NormedField ℚ :=
instance Rat.denselyNormedField : DenselyNormedField ℚ where
lt_norm_lt r₁ r₂ h₀ hr :=
let ⟨q, h⟩ := exists_rat_btwn hr
- ⟨q, by rwa [←Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
+ ⟨q, by rwa [← Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
section RingHomIsometric
variable {R₁ : Type*} {R₂ : Type*} {R₃ : Type*}
@@ -6,6 +6,7 @@ Authors: Patrick Massot, Johannes Hölzl
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Analysis.Normed.Group.Basic
import Mathlib.Topology.Instances.ENNReal
+import Mathlib.Topology.MetricSpace.DilationEquiv
#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"f06058e64b7e8397234455038f3f8aec83aaba5a"
@@ -16,12 +17,10 @@ In this file we define (semi)normed rings and fields. We also prove some theorem
definitions.
-/
-
variable {α : Type*} {β : Type*} {γ : Type*} {ι : Type*}
open Filter Metric Bornology
-
-open Topology BigOperators NNReal ENNReal uniformity Pointwise
+open scoped Topology BigOperators NNReal ENNReal uniformity Pointwise
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
@@ -595,46 +594,90 @@ theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
#align dist_inv_inv₀ dist_inv_inv₀
theorem nndist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
- nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) := by
- rw [← NNReal.coe_eq]
- simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
+ nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊) :=
+ NNReal.eq <| dist_inv_inv₀ hz hw
#align nndist_inv_inv₀ nndist_inv_inv₀
+lemma antilipschitzWith_mul_left {a : α} (ha : a ≠ 0) : AntilipschitzWith (‖a‖₊⁻¹) (a * ·) :=
+ AntilipschitzWith.of_le_mul_dist fun _ _ ↦ by simp [dist_eq_norm, ← _root_.mul_sub, ha]
+
+lemma antilipschitzWith_mul_right {a : α} (ha : a ≠ 0) : AntilipschitzWith (‖a‖₊⁻¹) (· * a) :=
+ AntilipschitzWith.of_le_mul_dist fun _ _ ↦ by
+ simp [dist_eq_norm, ← _root_.sub_mul, ← mul_comm (‖a‖), ha]
+
+/-- Multiplication by a nonzero element `a` on the left
+as a `DilationEquiv` of a normed division ring. -/
+@[simps!]
+def DilationEquiv.mulLeft (a : α) (ha : a ≠ 0) : α ≃ᵈ α where
+ toEquiv := Equiv.mulLeft₀ a ha
+ edist_eq' := ⟨‖a‖₊, nnnorm_ne_zero_iff.2 ha, fun x y ↦ by
+ simp [edist_nndist, nndist_eq_nnnorm, ← mul_sub]⟩
+
+/-- Multiplication by a nonzero element `a` on the right
+as a `DilationEquiv` of a normed division ring. -/
+@[simps!]
+def DilationEquiv.mulRight (a : α) (ha : a ≠ 0) : α ≃ᵈ α where
+ toEquiv := Equiv.mulRight₀ a ha
+ edist_eq' := ⟨‖a‖₊, nnnorm_ne_zero_iff.2 ha, fun x y ↦ by
+ simp [edist_nndist, nndist_eq_nnnorm, ← sub_mul, ← mul_comm (‖a‖₊)]⟩
+
+namespace Filter
+
+@[simp]
+lemma comap_mul_left_cobounded {a : α} (ha : a ≠ 0) :
+ comap (a * ·) (cobounded α) = cobounded α :=
+ Dilation.comap_cobounded (DilationEquiv.mulLeft a ha)
+
+@[simp]
+lemma map_mul_left_cobounded {a : α} (ha : a ≠ 0) :
+ map (a * ·) (cobounded α) = cobounded α :=
+ DilationEquiv.map_cobounded (DilationEquiv.mulLeft a ha)
+
+@[simp]
+lemma comap_mul_right_cobounded {a : α} (ha : a ≠ 0) :
+ comap (· * a) (cobounded α) = cobounded α :=
+ Dilation.comap_cobounded (DilationEquiv.mulRight a ha)
+
+@[simp]
+lemma map_mul_right_cobounded {a : α} (ha : a ≠ 0) :
+ map (· * a) (cobounded α) = cobounded α :=
+ DilationEquiv.map_cobounded (DilationEquiv.mulRight a ha)
+
/-- Multiplication on the left by a nonzero element of a normed division ring tends to infinity at
-infinity. TODO: use `Bornology.cobounded` instead of `Filter.comap Norm.norm Filter.atTop`. -/
-theorem Filter.tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
- Tendsto ((· * ·) a) (comap norm atTop) (comap norm atTop) := by
- simpa only [tendsto_comap_iff, (· ∘ ·), norm_mul] using
- tendsto_const_nhds.mul_atTop (norm_pos_iff.2 ha) tendsto_comap
+infinity. -/
+theorem tendsto_mul_left_cobounded {a : α} (ha : a ≠ 0) :
+ Tendsto (a * ·) (cobounded α) (cobounded α) :=
+ (map_mul_left_cobounded ha).le
#align filter.tendsto_mul_left_cobounded Filter.tendsto_mul_left_cobounded
/-- Multiplication on the right by a nonzero element of a normed division ring tends to infinity at
-infinity. TODO: use `Bornology.cobounded` instead of `Filter.comap Norm.norm Filter.atTop`. -/
-theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
- Tendsto (fun x => x * a) (comap norm atTop) (comap norm atTop) := by
- simpa only [tendsto_comap_iff, (· ∘ ·), norm_mul] using
- tendsto_comap.atTop_mul (norm_pos_iff.2 ha) tendsto_const_nhds
+infinity. -/
+theorem tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
+ Tendsto (· * a) (cobounded α) (cobounded α) :=
+ (map_mul_right_cobounded ha).le
#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_cobounded
@[simp]
-lemma Filter.inv_cobounded₀ : (cobounded α)⁻¹ = 𝓝[≠] 0 := by
+lemma inv_cobounded₀ : (cobounded α)⁻¹ = 𝓝[≠] 0 := by
rw [← comap_norm_atTop, ← Filter.comap_inv, ← comap_norm_nhdsWithin_Ioi_zero,
← inv_atTop₀, ← Filter.comap_inv]
simp only [comap_comap, (· ∘ ·), norm_inv]
@[simp]
-lemma Filter.inv_nhdsWithin_ne_zero : (𝓝[≠] (0 : α))⁻¹ = cobounded α := by
+lemma inv_nhdsWithin_ne_zero : (𝓝[≠] (0 : α))⁻¹ = cobounded α := by
rw [← inv_cobounded₀, inv_inv]
-lemma Filter.tendsto_inv₀_cobounded' : Tendsto Inv.inv (cobounded α) (𝓝[≠] 0) :=
+lemma tendsto_inv₀_cobounded' : Tendsto Inv.inv (cobounded α) (𝓝[≠] 0) :=
inv_cobounded₀.le
-theorem Filter.tendsto_inv₀_cobounded : Tendsto Inv.inv (cobounded α) (𝓝 0) :=
+theorem tendsto_inv₀_cobounded : Tendsto Inv.inv (cobounded α) (𝓝 0) :=
tendsto_inv₀_cobounded'.mono_right inf_le_left
-lemma Filter.tendsto_inv₀_nhdsWithin_ne_zero : Tendsto Inv.inv (𝓝[≠] 0) (cobounded α) :=
+lemma tendsto_inv₀_nhdsWithin_ne_zero : Tendsto Inv.inv (𝓝[≠] 0) (cobounded α) :=
inv_nhdsWithin_ne_zero.le
+end Filter
+
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α := by
refine' ⟨fun r r0 => tendsto_iff_norm_sub_tendsto_zero.2 _⟩
@@ -841,7 +884,7 @@ namespace Real
theorem toNNReal_mul_nnnorm {x : ℝ} (y : ℝ) (hx : 0 ≤ x) : x.toNNReal * ‖y‖₊ = ‖x * y‖₊ := by
ext
simp only [NNReal.coe_mul, nnnorm_mul, coe_nnnorm, Real.toNNReal_of_nonneg, norm_of_nonneg, hx,
- coe_mk]
+ NNReal.coe_mk]
#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnorm
theorem nnnorm_mul_toNNReal (x : ℝ) {y : ℝ} (hy : 0 ≤ y) : ‖x‖₊ * y.toNNReal = ‖x * y‖₊ := by
@@ -1057,5 +1100,5 @@ instance toNormedCommRing [NormedCommRing R] [SubringClass S R] (s : S) : Normed
end SubringClass
--- Guard again import creep.
+-- Guard against import creep.
assert_not_exists RestrictScalars
exact_mod_cast
tactic with mod_cast
elaborator where possible (#8404)
We still have the exact_mod_cast
tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast
are the ones that don't work using the term elaborator by itself.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -783,8 +783,8 @@ theorem exists_lt_norm_lt {r₁ r₂ : ℝ} (h₀ : 0 ≤ r₁) (h : r₁ < r₂
DenselyNormedField.lt_norm_lt r₁ r₂ h₀ h
#align normed_field.exists_lt_norm_lt NormedField.exists_lt_norm_lt
-theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ := by
- exact_mod_cast exists_lt_norm_lt α r₁.prop h
+theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂ :=
+ mod_cast exists_lt_norm_lt α r₁.prop h
#align normed_field.exists_lt_nnnorm_lt NormedField.exists_lt_nnnorm_lt
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ)) where
Generalize from nontrivially normed fields to normed fields. Also prove that a nontrivially normed field is infinite.
@@ -811,6 +811,19 @@ end Densely
end NormedField
+/-- A normed field is nontrivially normed
+provided that the norm of some nonzero element is not one. -/
+def NontriviallyNormedField.ofNormNeOne {𝕜 : Type*} [h' : NormedField 𝕜]
+ (h : ∃ x : 𝕜, x ≠ 0 ∧ ‖x‖ ≠ 1) : NontriviallyNormedField 𝕜 where
+ toNormedField := h'
+ non_trivial := by
+ rcases h with ⟨x, hx, hx1⟩
+ rcases hx1.lt_or_lt with hlt | hlt
+ · use x⁻¹
+ rw [norm_inv]
+ exact one_lt_inv (norm_pos_iff.2 hx) hlt
+ · exact ⟨x, hlt⟩
+
instance Real.normedCommRing : NormedCommRing ℝ :=
{ Real.normedAddCommGroup, Real.commRing with norm_mul := fun x y => (abs_mul x y).le }
@@ -19,7 +19,7 @@ definitions.
variable {α : Type*} {β : Type*} {γ : Type*} {ι : Type*}
-open Filter Metric
+open Filter Metric Bornology
open Topology BigOperators NNReal ENNReal uniformity Pointwise
@@ -616,6 +616,25 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
tendsto_comap.atTop_mul (norm_pos_iff.2 ha) tendsto_const_nhds
#align filter.tendsto_mul_right_cobounded Filter.tendsto_mul_right_cobounded
+@[simp]
+lemma Filter.inv_cobounded₀ : (cobounded α)⁻¹ = 𝓝[≠] 0 := by
+ rw [← comap_norm_atTop, ← Filter.comap_inv, ← comap_norm_nhdsWithin_Ioi_zero,
+ ← inv_atTop₀, ← Filter.comap_inv]
+ simp only [comap_comap, (· ∘ ·), norm_inv]
+
+@[simp]
+lemma Filter.inv_nhdsWithin_ne_zero : (𝓝[≠] (0 : α))⁻¹ = cobounded α := by
+ rw [← inv_cobounded₀, inv_inv]
+
+lemma Filter.tendsto_inv₀_cobounded' : Tendsto Inv.inv (cobounded α) (𝓝[≠] 0) :=
+ inv_cobounded₀.le
+
+theorem Filter.tendsto_inv₀_cobounded : Tendsto Inv.inv (cobounded α) (𝓝 0) :=
+ tendsto_inv₀_cobounded'.mono_right inf_le_left
+
+lemma Filter.tendsto_inv₀_nhdsWithin_ne_zero : Tendsto Inv.inv (𝓝[≠] 0) (cobounded α) :=
+ inv_nhdsWithin_ne_zero.le
+
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α := by
refine' ⟨fun r r0 => tendsto_iff_norm_sub_tendsto_zero.2 _⟩
filter_upwards
(#7719)
mathport was forgetting a space in filter_upwards [...]with
instead of filter_upwards [...] with
.
@@ -622,7 +622,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
have r0' : 0 < ‖r‖ := norm_pos_iff.2 r0
rcases exists_between r0' with ⟨ε, ε0, εr⟩
have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε := by
- filter_upwards [(isOpen_lt continuous_const continuous_norm).eventually_mem εr]with e he
+ filter_upwards [(isOpen_lt continuous_const continuous_norm).eventually_mem εr] with e he
have e0 : e ≠ 0 := norm_pos_iff.1 (ε0.trans he)
calc
‖e⁻¹ - r⁻¹‖ = ‖r‖⁻¹ * ‖r - e‖ * ‖e‖⁻¹ := by
Rename:
tendsto_iff_norm_tendsto_one
→
tendsto_iff_norm_div_tendsto_zero
;tendsto_iff_norm_tendsto_zero
→
tendsto_iff_norm_sub_tendsto_zero
;tendsto_one_iff_norm_tendsto_one
→
tendsto_one_iff_norm_tendsto_zero
;Filter.Tendsto.continuous_of_equicontinuous_at
→
Filter.Tendsto.continuous_of_equicontinuousAt
.@@ -468,7 +468,7 @@ end NormedRing
instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
ContinuousMul α :=
⟨continuous_iff_continuousAt.2 fun x =>
- tendsto_iff_norm_tendsto_zero.2 <| by
+ tendsto_iff_norm_sub_tendsto_zero.2 <| by
have : ∀ e : α × α,
‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ := by
intro e
@@ -618,7 +618,7 @@ theorem Filter.tendsto_mul_right_cobounded {a : α} (ha : a ≠ 0) :
-- see Note [lower instance priority]
instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContinuousInv₀ α := by
- refine' ⟨fun r r0 => tendsto_iff_norm_tendsto_zero.2 _⟩
+ refine' ⟨fun r r0 => tendsto_iff_norm_sub_tendsto_zero.2 _⟩
have r0' : 0 < ‖r‖ := norm_pos_iff.2 r0
rcases exists_between r0' with ⟨ε, ε0, εr⟩
have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε := by
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -17,7 +17,7 @@ definitions.
-/
-variable {α : Type _} {β : Type _} {γ : Type _} {ι : Type _}
+variable {α : Type*} {β : Type*} {γ : Type*} {ι : Type*}
open Filter Metric
@@ -25,7 +25,7 @@ open Topology BigOperators NNReal ENNReal uniformity Pointwise
/-- A non-unital seminormed ring is a not-necessarily-unital ring
endowed with a seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
+class NonUnitalSeminormedRing (α : Type*) extends Norm α, NonUnitalRing α,
PseudoMetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
@@ -35,7 +35,7 @@ class NonUnitalSeminormedRing (α : Type _) extends Norm α, NonUnitalRing α,
/-- A seminormed ring is a ring endowed with a seminorm which satisfies the inequality
`‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class SeminormedRing (α : Type _) extends Norm α, Ring α, PseudoMetricSpace α where
+class SeminormedRing (α : Type*) extends Norm α, Ring α, PseudoMetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
/-- The norm is submultiplicative. -/
@@ -51,7 +51,7 @@ instance (priority := 100) SeminormedRing.toNonUnitalSeminormedRing [β : Semino
/-- A non-unital normed ring is a not-necessarily-unital ring
endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NonUnitalNormedRing (α : Type _) extends Norm α, NonUnitalRing α, MetricSpace α where
+class NonUnitalNormedRing (α : Type*) extends Norm α, NonUnitalRing α, MetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
/-- The norm is submultiplicative. -/
@@ -66,7 +66,7 @@ instance (priority := 100) NonUnitalNormedRing.toNonUnitalSeminormedRing
#align non_unital_normed_ring.to_non_unital_semi_normed_ring NonUnitalNormedRing.toNonUnitalSeminormedRing
/-- A normed ring is a ring endowed with a norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NormedRing (α : Type _) extends Norm α, Ring α, MetricSpace α where
+class NormedRing (α : Type*) extends Norm α, Ring α, MetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
/-- The norm is submultiplicative. -/
@@ -75,7 +75,7 @@ class NormedRing (α : Type _) extends Norm α, Ring α, MetricSpace α where
/-- A normed division ring is a division ring endowed with a seminorm which satisfies the equality
`‖x y‖ = ‖x‖ ‖y‖`. -/
-class NormedDivisionRing (α : Type _) extends Norm α, DivisionRing α, MetricSpace α where
+class NormedDivisionRing (α : Type*) extends Norm α, DivisionRing α, MetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
/-- The norm is multiplicative. -/
@@ -104,14 +104,14 @@ instance (priority := 100) NormedRing.toNonUnitalNormedRing [β : NormedRing α]
/-- A seminormed commutative ring is a commutative ring endowed with a seminorm which satisfies
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class SeminormedCommRing (α : Type _) extends SeminormedRing α where
+class SeminormedCommRing (α : Type*) extends SeminormedRing α where
/-- Multiplication is commutative. -/
mul_comm : ∀ x y : α, x * y = y * x
#align semi_normed_comm_ring SeminormedCommRing
/-- A normed commutative ring is a commutative ring endowed with a norm which satisfies
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
-class NormedCommRing (α : Type _) extends NormedRing α where
+class NormedCommRing (α : Type*) extends NormedRing α where
/-- Multiplication is commutative. -/
mul_comm : ∀ x y : α, x * y = y * x
#align normed_comm_ring NormedCommRing
@@ -129,7 +129,7 @@ instance PUnit.normedCommRing : NormedCommRing PUnit :=
/-- A mixin class with the axiom `‖1‖ = 1`. Many `NormedRing`s and all `NormedField`s satisfy this
axiom. -/
-class NormOneClass (α : Type _) [Norm α] [One α] : Prop where
+class NormOneClass (α : Type*) [Norm α] [One α] : Prop where
/-- The norm of the multiplicative identity is 1. -/
norm_one : ‖(1 : α)‖ = 1
#align norm_one_class NormOneClass
@@ -143,7 +143,7 @@ theorem nnnorm_one [SeminormedAddCommGroup α] [One α] [NormOneClass α] : ‖(
NNReal.eq norm_one
#align nnnorm_one nnnorm_one
-theorem NormOneClass.nontrivial (α : Type _) [SeminormedAddCommGroup α] [One α] [NormOneClass α] :
+theorem NormOneClass.nontrivial (α : Type*) [SeminormedAddCommGroup α] [One α] [NormOneClass α] :
Nontrivial α :=
nontrivial_of_ne 0 1 <| ne_of_apply_ne norm <| by simp
#align norm_one_class.nontrivial NormOneClass.nontrivial
@@ -174,7 +174,7 @@ instance Prod.normOneClass [SeminormedAddCommGroup α] [One α] [NormOneClass α
⟨by simp [Prod.norm_def]⟩
#align prod.norm_one_class Prod.normOneClass
-instance Pi.normOneClass {ι : Type _} {α : ι → Type _} [Nonempty ι] [Fintype ι]
+instance Pi.normOneClass {ι : Type*} {α : ι → Type*} [Nonempty ι] [Fintype ι]
[∀ i, SeminormedAddCommGroup (α i)] [∀ i, One (α i)] [∀ i, NormOneClass (α i)] :
NormOneClass (∀ i, α i) :=
⟨by simp [Pi.norm_def]; exact Finset.sup_const Finset.univ_nonempty 1⟩
@@ -256,7 +256,7 @@ instance Prod.nonUnitalSeminormedRing [NonUnitalSeminormedRing β] :
/-- Non-unital seminormed ring structure on the product of finitely many non-unital seminormed
rings, using the sup norm. -/
-instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
+instance Pi.nonUnitalSeminormedRing {π : ι → Type*} [Fintype ι]
[∀ i, NonUnitalSeminormedRing (π i)] : NonUnitalSeminormedRing (∀ i, π i) :=
{ Pi.seminormedAddCommGroup, Pi.nonUnitalRing with
norm_mul := fun x y =>
@@ -286,7 +286,7 @@ variable [SeminormedRing α]
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
-instance Subalgebra.seminormedRing {𝕜 : Type _} [CommRing 𝕜] {E : Type _} [SeminormedRing E]
+instance Subalgebra.seminormedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [SeminormedRing E]
[Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : SeminormedRing s :=
{ s.toSubmodule.seminormedAddCommGroup, s.toRing with
norm_mul := fun a b => norm_mul_le a.1 b.1 }
@@ -295,7 +295,7 @@ instance Subalgebra.seminormedRing {𝕜 : Type _} [CommRing 𝕜] {E : Type _}
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
-instance Subalgebra.normedRing {𝕜 : Type _} [CommRing 𝕜] {E : Type _} [NormedRing E]
+instance Subalgebra.normedRing {𝕜 : Type*} [CommRing 𝕜] {E : Type*} [NormedRing E]
[Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : NormedRing s :=
{ s.seminormedRing with
eq_of_dist_eq_zero := eq_of_dist_eq_zero }
@@ -330,25 +330,25 @@ theorem List.nnnorm_prod_le [NormOneClass α] (l : List α) : ‖l.prod‖₊
l.norm_prod_le.trans_eq <| by simp [NNReal.coe_list_prod, List.map_map]
#align list.nnnorm_prod_le List.nnnorm_prod_le
-theorem Finset.norm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
+theorem Finset.norm_prod_le' {α : Type*} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ := by
rcases s with ⟨⟨l⟩, hl⟩
have : l.map f ≠ [] := by simpa using hs
simpa using List.norm_prod_le' this
#align finset.norm_prod_le' Finset.norm_prod_le'
-theorem Finset.nnnorm_prod_le' {α : Type _} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
+theorem Finset.nnnorm_prod_le' {α : Type*} [NormedCommRing α] (s : Finset ι) (hs : s.Nonempty)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le' hs f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le' Finset.nnnorm_prod_le'
-theorem Finset.norm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
+theorem Finset.norm_prod_le {α : Type*} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖ ≤ ∏ i in s, ‖f i‖ := by
rcases s with ⟨⟨l⟩, hl⟩
simpa using (l.map f).norm_prod_le
#align finset.norm_prod_le Finset.norm_prod_le
-theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
+theorem Finset.nnnorm_prod_le {α : Type*} [NormedCommRing α] [NormOneClass α] (s : Finset ι)
(f : ι → α) : ‖∏ i in s, f i‖₊ ≤ ∏ i in s, ‖f i‖₊ :=
(s.norm_prod_le f).trans_eq <| by simp [NNReal.coe_prod]
#align finset.nnnorm_prod_le Finset.nnnorm_prod_le
@@ -395,7 +395,7 @@ instance Prod.seminormedRing [SeminormedRing β] : SeminormedRing (α × β) :=
/-- Seminormed ring structure on the product of finitely many seminormed rings,
using the sup norm. -/
-instance Pi.seminormedRing {π : ι → Type _} [Fintype ι] [∀ i, SeminormedRing (π i)] :
+instance Pi.seminormedRing {π : ι → Type*} [Fintype ι] [∀ i, SeminormedRing (π i)] :
SeminormedRing (∀ i, π i) :=
{ Pi.nonUnitalSeminormedRing, Pi.ring with }
#align pi.semi_normed_ring Pi.seminormedRing
@@ -421,7 +421,7 @@ instance Prod.nonUnitalNormedRing [NonUnitalNormedRing β] : NonUnitalNormedRing
/-- Normed ring structure on the product of finitely many non-unital normed rings, using the sup
norm. -/
-instance Pi.nonUnitalNormedRing {π : ι → Type _} [Fintype ι] [∀ i, NonUnitalNormedRing (π i)] :
+instance Pi.nonUnitalNormedRing {π : ι → Type*} [Fintype ι] [∀ i, NonUnitalNormedRing (π i)] :
NonUnitalNormedRing (∀ i, π i) :=
{ Pi.nonUnitalSeminormedRing, Pi.normedAddCommGroup with }
#align pi.non_unital_normed_ring Pi.nonUnitalNormedRing
@@ -453,7 +453,7 @@ instance Prod.normedRing [NormedRing β] : NormedRing (α × β) :=
#align prod.normed_ring Prod.normedRing
/-- Normed ring structure on the product of finitely many normed rings, using the sup norm. -/
-instance Pi.normedRing {π : ι → Type _} [Fintype ι] [∀ i, NormedRing (π i)] :
+instance Pi.normedRing {π : ι → Type*} [Fintype ι] [∀ i, NormedRing (π i)] :
NormedRing (∀ i, π i) :=
{ Pi.seminormedRing, Pi.normedAddCommGroup with }
#align pi.normed_ring Pi.normedRing
@@ -655,7 +655,7 @@ theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖
end NormedDivisionRing
/-- A normed field is a field with a norm satisfying ‖x y‖ = ‖x‖ ‖y‖. -/
-class NormedField (α : Type _) extends Norm α, Field α, MetricSpace α where
+class NormedField (α : Type*) extends Norm α, Field α, MetricSpace α where
/-- The distance is induced by the norm. -/
dist_eq : ∀ x y, dist x y = norm (x - y)
/-- The norm is multiplicative. -/
@@ -665,7 +665,7 @@ class NormedField (α : Type _) extends Norm α, Field α, MetricSpace α where
/-- A nontrivially normed field is a normed field in which there is an element of norm different
from `0` and `1`. This makes it possible to bring any element arbitrarily close to `0` by
multiplication by the powers of any element, and thus to relate algebra and topology. -/
-class NontriviallyNormedField (α : Type _) extends NormedField α where
+class NontriviallyNormedField (α : Type*) extends NormedField α where
/-- The norm attains a value exceeding 1. -/
non_trivial : ∃ x : α, 1 < ‖x‖
#align nontrivially_normed_field NontriviallyNormedField
@@ -673,7 +673,7 @@ class NontriviallyNormedField (α : Type _) extends NormedField α where
/-- A densely normed field is a normed field for which the image of the norm is dense in `ℝ≥0`,
which means it is also nontrivially normed. However, not all nontrivally normed fields are densely
normed; in particular, the `Padic`s exhibit this fact. -/
-class DenselyNormedField (α : Type _) extends NormedField α where
+class DenselyNormedField (α : Type*) extends NormedField α where
/-- The range of the norm is dense in the collection of nonnegative real numbers. -/
lt_norm_lt : ∀ x y : ℝ, 0 ≤ x → x < y → ∃ a : α, x < ‖a‖ ∧ ‖a‖ < y
#align densely_normed_field DenselyNormedField
@@ -844,7 +844,7 @@ theorem nnnorm_norm [SeminormedAddCommGroup α] (a : α) : ‖‖a‖‖₊ =
#align nnnorm_norm nnnorm_norm
/-- A restatement of `MetricSpace.tendsto_atTop` in terms of the norm. -/
-theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β : Type _}
+theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β : Type*}
[SeminormedAddCommGroup β] {f : α → β} {b : β} :
Tendsto f atTop (𝓝 b) ↔ ∀ ε, 0 < ε → ∃ N, ∀ n, N ≤ n → ‖f n - b‖ < ε :=
(atTop_basis.tendsto_iff Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
@@ -854,7 +854,7 @@ theorem NormedAddCommGroup.tendsto_atTop [Nonempty α] [SemilatticeSup α] {β :
uses `∃ N, ∀ n > N, ...` rather than `∃ N, ∀ n ≥ N, ...`
-/
theorem NormedAddCommGroup.tendsto_atTop' [Nonempty α] [SemilatticeSup α] [NoMaxOrder α]
- {β : Type _} [SeminormedAddCommGroup β] {f : α → β} {b : β} :
+ {β : Type*} [SeminormedAddCommGroup β] {f : α → β} {b : β} :
Tendsto f atTop (𝓝 b) ↔ ∀ ε, 0 < ε → ∃ N, ∀ n, N < n → ‖f n - b‖ < ε :=
(atTop_basis_Ioi.tendsto_iff Metric.nhds_basis_ball).trans (by simp [dist_eq_norm])
#align normed_add_comm_group.tendsto_at_top' NormedAddCommGroup.tendsto_atTop'
@@ -877,7 +877,7 @@ instance Rat.denselyNormedField : DenselyNormedField ℚ where
⟨q, by rwa [←Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
section RingHomIsometric
-variable {R₁ : Type _} {R₂ : Type _} {R₃ : Type _}
+variable {R₁ : Type*} {R₂ : Type*} {R₃ : Type*}
/-- This class states that a ring homomorphism is isometric. This is a sufficient assumption
for a continuous semilinear map to be bounded and this is the main use for this typeclass. -/
@@ -901,7 +901,7 @@ end RingHomIsometric
section Induced
-variable {F : Type _} (R S : Type _)
+variable {F : Type*} (R S : Type*)
/-- A non-unital ring homomorphism from a `NonUnitalRing` to a `NonUnitalSeminormedRing`
induces a `NonUnitalSeminormedRing` structure on the domain.
@@ -992,7 +992,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
/-- A ring homomorphism from a `Ring R` to a `SeminormedRing S` which induces the norm structure
`SeminormedRing.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
-theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
+theorem NormOneClass.induced {F : Type*} (R S : Type*) [Ring R] [SeminormedRing S]
[NormOneClass S] [RingHomClass F R S] (f : F) :
@NormOneClass R (SeminormedRing.induced R S f).toNorm _ :=
-- porting note: is this `let` a bad idea somehow?
@@ -1004,7 +1004,7 @@ end Induced
namespace SubringClass
-variable {S R : Type _} [SetLike S R]
+variable {S R : Type*} [SetLike S R]
instance toSeminormedRing [SeminormedRing R] [SubringClass S R] (s : S) : SeminormedRing s :=
SeminormedRing.induced s R (SubringClass.subtype s)
@@ -239,7 +239,7 @@ instance ULift.nonUnitalSeminormedRing : NonUnitalSeminormedRing (ULift α) :=
using the sup norm. -/
instance Prod.nonUnitalSeminormedRing [NonUnitalSeminormedRing β] :
NonUnitalSeminormedRing (α × β) :=
- { Prod.seminormedAddCommGroup, instNonUnitalRingProd with
+ { seminormedAddCommGroup, instNonUnitalRing with
norm_mul := fun x y =>
calc
‖x * y‖ = ‖(x.1 * y.1, x.2 * y.2)‖ := rfl
@@ -390,7 +390,7 @@ instance ULift.seminormedRing : SeminormedRing (ULift α) :=
/-- Seminormed ring structure on the product of two seminormed rings,
using the sup norm. -/
instance Prod.seminormedRing [SeminormedRing β] : SeminormedRing (α × β) :=
- { Prod.nonUnitalSeminormedRing, instRingProd with }
+ { nonUnitalSeminormedRing, instRing with }
#align prod.semi_normed_ring Prod.seminormedRing
/-- Seminormed ring structure on the product of finitely many seminormed rings,
@@ -449,7 +449,7 @@ instance ULift.normedRing : NormedRing (ULift α) :=
/-- Normed ring structure on the product of two normed rings, using the sup norm. -/
instance Prod.normedRing [NormedRing β] : NormedRing (α × β) :=
- { Prod.nonUnitalNormedRing, instRingProd with }
+ { nonUnitalNormedRing, instRing with }
#align prod.normed_ring Prod.normedRing
/-- Normed ring structure on the product of finitely many normed rings, using the sup norm. -/
@@ -2,16 +2,13 @@
Copyright (c) 2018 Patrick Massot. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Patrick Massot, Johannes Hölzl
-
-! This file was ported from Lean 3 source module analysis.normed.field.basic
-! leanprover-community/mathlib commit f06058e64b7e8397234455038f3f8aec83aaba5a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Algebra.Subalgebra.Basic
import Mathlib.Analysis.Normed.Group.Basic
import Mathlib.Topology.Instances.ENNReal
+#align_import analysis.normed.field.basic from "leanprover-community/mathlib"@"f06058e64b7e8397234455038f3f8aec83aaba5a"
+
/-!
# Normed fields
@@ -906,7 +906,7 @@ section Induced
variable {F : Type _} (R S : Type _)
-/-- A non-unital ring homomorphism from an `NonUnitalRing` to a `NonUnitalSeminormedRing`
+/-- A non-unital ring homomorphism from a `NonUnitalRing` to a `NonUnitalSeminormedRing`
induces a `NonUnitalSeminormedRing` structure on the domain.
See note [reducible non-instances] -/
@@ -919,7 +919,7 @@ def NonUnitalSeminormedRing.induced [NonUnitalRing R] [NonUnitalSeminormedRing S
exact (map_mul f x y).symm ▸ norm_mul_le (f x) (f y) }
#align non_unital_semi_normed_ring.induced NonUnitalSeminormedRing.induced
-/-- An injective non-unital ring homomorphism from an `NonUnitalRing` to a
+/-- An injective non-unital ring homomorphism from a `NonUnitalRing` to a
`NonUnitalNormedRing` induces a `NonUnitalNormedRing` structure on the domain.
See note [reducible non-instances] -/
@@ -929,7 +929,7 @@ def NonUnitalNormedRing.induced [NonUnitalRing R] [NonUnitalNormedRing S]
{ NonUnitalSeminormedRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
#align non_unital_normed_ring.induced NonUnitalNormedRing.induced
-/-- A non-unital ring homomorphism from an `Ring` to a `SeminormedRing` induces a
+/-- A non-unital ring homomorphism from a `Ring` to a `SeminormedRing` induces a
`SeminormedRing` structure on the domain.
See note [reducible non-instances] -/
@@ -939,7 +939,7 @@ def SeminormedRing.induced [Ring R] [SeminormedRing S] [NonUnitalRingHomClass F
{ NonUnitalSeminormedRing.induced R S f, SeminormedAddCommGroup.induced R S f, ‹Ring R› with }
#align semi_normed_ring.induced SeminormedRing.induced
-/-- An injective non-unital ring homomorphism from an `Ring` to a `NormedRing` induces a
+/-- An injective non-unital ring homomorphism from a `Ring` to a `NormedRing` induces a
`NormedRing` structure on the domain.
See note [reducible non-instances] -/
@@ -959,7 +959,7 @@ def SeminormedCommRing.induced [CommRing R] [SeminormedRing S] [NonUnitalRingHom
{ NonUnitalSeminormedRing.induced R S f, SeminormedAddCommGroup.induced R S f, ‹CommRing R› with }
#align semi_normed_comm_ring.induced SeminormedCommRing.induced
-/-- An injective non-unital ring homomorphism from an `CommRing` to a `NormedRing` induces a
+/-- An injective non-unital ring homomorphism from a `CommRing` to a `NormedRing` induces a
`NormedCommRing` structure on the domain.
See note [reducible non-instances] -/
@@ -969,7 +969,7 @@ def NormedCommRing.induced [CommRing R] [NormedRing S] [NonUnitalRingHomClass F
{ SeminormedCommRing.induced R S f, NormedAddCommGroup.induced R S f hf with }
#align normed_comm_ring.induced NormedCommRing.induced
-/-- An injective non-unital ring homomorphism from an `DivisionRing` to a `NormedRing` induces a
+/-- An injective non-unital ring homomorphism from a `DivisionRing` to a `NormedRing` induces a
`NormedDivisionRing` structure on the domain.
See note [reducible non-instances] -/
@@ -982,7 +982,7 @@ def NormedDivisionRing.induced [DivisionRing R] [NormedDivisionRing S] [NonUnita
exact (map_mul f x y).symm ▸ norm_mul (f x) (f y) }
#align normed_division_ring.induced NormedDivisionRing.induced
-/-- An injective non-unital ring homomorphism from an `Field` to a `NormedRing` induces a
+/-- An injective non-unital ring homomorphism from a `Field` to a `NormedRing` induces a
`NormedField` structure on the domain.
See note [reducible non-instances] -/
@@ -648,7 +648,7 @@ instance (priority := 100) NormedDivisionRing.to_topologicalDivisionRing : Topol
theorem norm_map_one_of_pow_eq_one [Monoid β] (φ : β →* α) {x : β} {k : ℕ+} (h : x ^ (k : ℕ) = 1) :
‖φ x‖ = 1 := by
rw [← pow_left_inj, ← norm_pow, ← map_pow, h, map_one, norm_one, one_pow]
- exacts[norm_nonneg _, zero_le_one, k.pos]
+ exacts [norm_nonneg _, zero_le_one, k.pos]
#align norm_map_one_of_pow_eq_one norm_map_one_of_pow_eq_one
theorem norm_one_of_pow_eq_one {x : α} {k : ℕ+} (h : x ^ (k : ℕ) = 1) : ‖x‖ = 1 :=
@@ -633,9 +633,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
mul_assoc _ e, inv_mul_cancel r0, mul_inv_cancel e0, one_mul, mul_one]
-- porting note: `ENNReal.{mul_sub, sub_mul}` should be `protected`
_ = ‖r - e‖ / ‖r‖ / ‖e‖ := by field_simp [mul_comm]
- _ ≤ ‖r - e‖ / ‖r‖ / ε :=
- div_le_div_of_le_left (div_nonneg (norm_nonneg _) (norm_nonneg _)) ε0 he.le
-
+ _ ≤ ‖r - e‖ / ‖r‖ / ε := by gcongr
refine' squeeze_zero' (eventually_of_forall fun _ => norm_nonneg _) this _
refine' (((continuous_const.sub continuous_id).norm.div_const _).div_const _).tendsto' _ _ _
simp
fix-comments.py
on all files.@@ -677,7 +677,7 @@ class NontriviallyNormedField (α : Type _) extends NormedField α where
/-- A densely normed field is a normed field for which the image of the norm is dense in `ℝ≥0`,
which means it is also nontrivially normed. However, not all nontrivally normed fields are densely
-normed; in particular, the `padic`s exhibit this fact. -/
+normed; in particular, the `Padic`s exhibit this fact. -/
class DenselyNormedField (α : Type _) extends NormedField α where
/-- The range of the norm is dense in the collection of nonnegative real numbers. -/
lt_norm_lt : ∀ x y : ℝ, 0 ≤ x → x < y → ∃ a : α, x < ‖a‖ ∧ ‖a‖ < y
@@ -1030,8 +1030,5 @@ instance toNormedCommRing [NormedCommRing R] [SubringClass S R] (s : S) : Normed
end SubringClass
--- porting note: add this back in once `assert_not_exists` is ported
-/-
-- Guard again import creep.
assert_not_exists RestrictScalars
--/
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>
@@ -286,7 +286,6 @@ section SeminormedRing
variable [SeminormedRing α]
-set_option synthInstance.etaExperiment true in
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
@@ -996,7 +995,6 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
mul_comm := mul_comm }
#align normed_field.induced NormedField.induced
-set_option synthInstance.etaExperiment true in
/-- A ring homomorphism from a `Ring R` to a `SeminormedRing S` which induces the norm structure
`SeminormedRing.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
@@ -1013,12 +1011,10 @@ namespace SubringClass
variable {S R : Type _} [SetLike S R]
-set_option synthInstance.etaExperiment true in
instance toSeminormedRing [SeminormedRing R] [SubringClass S R] (s : S) : SeminormedRing s :=
SeminormedRing.induced s R (SubringClass.subtype s)
#align subring_class.to_semi_normed_ring SubringClass.toSeminormedRing
-set_option synthInstance.etaExperiment true in
instance toNormedRing [NormedRing R] [SubringClass S R] (s : S) : NormedRing s :=
NormedRing.induced s R (SubringClass.subtype s) Subtype.val_injective
#align subring_class.to_normed_ring SubringClass.toNormedRing
@@ -483,26 +483,15 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
_ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
refine squeeze_zero (fun e => norm_nonneg _) this ?_
- -- porting note: the new `convert` sucks, it's way too dumb without using the type
- -- of the goal to figure out how to match things up. The rest of this proof was:
- /- convert
+ convert
((continuous_fst.tendsto x).norm.mul
((continuous_snd.tendsto x).sub tendsto_const_nhds).norm).add
(((continuous_fst.tendsto x).sub tendsto_const_nhds).norm.mul _)
- show tendsto _ _ _
+ -- Porting note: `show` used to select a goal to work on
+ rotate_right
+ show Tendsto _ _ _
exact tendsto_const_nhds
- simp -/
- rw [←zero_add 0]
- refine Tendsto.add ?_ ?_
- · rw [←mul_zero (‖x.fst‖)]
- refine Filter.Tendsto.mul ?_ ?_
- · exact (continuous_fst.tendsto x).norm
- · rw [←norm_zero (E := α), ←sub_self x.snd]
- exact ((continuous_snd.tendsto x).sub tendsto_const_nhds).norm
- · rw [←zero_mul (‖x.snd‖)]
- refine' Filter.Tendsto.mul _ tendsto_const_nhds
- rw [←norm_zero (E := α), ←sub_self x.fst]
- exact ((continuous_fst.tendsto x).sub tendsto_const_nhds).norm⟩
+ simp⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
-- see Note [lower instance priority]
We make sure that the canonical path from NonAssocSemiring
to Ring
passes through Semiring
,
as this is a path which is followed all the time in linear algebra where the defining semilinear map
σ : R →+* S
depends on the NonAssocSemiring
structure of R
and S
while the module
definition depends on the Semiring
structure.
Tt is not currently possible to adjust priorities by hand (see lean4#2115). Instead, the last
declared instance is used, so we make sure that Semiring
is declared after NonAssocRing
, so
that Semiring -> NonAssocSemiring
is tried before NonAssocRing -> NonAssocSemiring
.
@@ -1007,6 +1007,7 @@ def NormedField.induced [Field R] [NormedField S] [NonUnitalRingHomClass F R S]
mul_comm := mul_comm }
#align normed_field.induced NormedField.induced
+set_option synthInstance.etaExperiment true in
/-- A ring homomorphism from a `Ring R` to a `SeminormedRing S` which induces the norm structure
`SeminormedRing.induced` makes `R` satisfy `‖(1 : R)‖ = 1` whenever `‖(1 : S)‖ = 1`. -/
theorem NormOneClass.induced {F : Type _} (R S : Type _) [Ring R] [SeminormedRing S]
@@ -1023,10 +1024,12 @@ namespace SubringClass
variable {S R : Type _} [SetLike S R]
+set_option synthInstance.etaExperiment true in
instance toSeminormedRing [SeminormedRing R] [SubringClass S R] (s : S) : SeminormedRing s :=
SeminormedRing.induced s R (SubringClass.subtype s)
#align subring_class.to_semi_normed_ring SubringClass.toSeminormedRing
+set_option synthInstance.etaExperiment true in
instance toNormedRing [NormedRing R] [SubringClass S R] (s : S) : NormedRing s :=
NormedRing.induced s R (SubringClass.subtype s) Subtype.val_injective
#align subring_class.to_normed_ring SubringClass.toNormedRing
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -473,8 +473,8 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
ContinuousMul α :=
⟨continuous_iff_continuousAt.2 fun x =>
tendsto_iff_norm_tendsto_zero.2 <| by
- have : ∀ e : α × α, ‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
- by
+ have : ∀ e : α × α,
+ ‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ := by
intro e
calc
‖e.1 * e.2 - x.1 * x.2‖ ≤ ‖e.1 * (e.2 - x.2) + (e.1 - x.1) * x.2‖ := by
@@ -603,8 +603,8 @@ theorem nnnorm_zpow : ∀ (a : α) (n : ℤ), ‖a ^ n‖₊ = ‖a‖₊ ^ n :=
map_zpow₀ (nnnormHom : α →*₀ ℝ≥0)
#align nnnorm_zpow nnnorm_zpow
-theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) : dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) :=
- by
+theorem dist_inv_inv₀ {z w : α} (hz : z ≠ 0) (hw : w ≠ 0) :
+ dist z⁻¹ w⁻¹ = dist z w / (‖z‖ * ‖w‖) := by
rw [dist_eq_norm, inv_sub_inv' hz hw, norm_mul, norm_mul, norm_inv, norm_inv, mul_comm ‖z‖⁻¹,
mul_assoc, dist_eq_norm', div_eq_mul_inv, mul_inv]
#align dist_inv_inv₀ dist_inv_inv₀
@@ -636,8 +636,7 @@ instance (priority := 100) NormedDivisionRing.to_hasContinuousInv₀ : HasContin
refine' ⟨fun r r0 => tendsto_iff_norm_tendsto_zero.2 _⟩
have r0' : 0 < ‖r‖ := norm_pos_iff.2 r0
rcases exists_between r0' with ⟨ε, ε0, εr⟩
- have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε :=
- by
+ have : ∀ᶠ e in 𝓝 r, ‖e⁻¹ - r⁻¹‖ ≤ ‖r - e‖ / ‖r‖ / ε := by
filter_upwards [(isOpen_lt continuous_const continuous_norm).eventually_mem εr]with e he
have e0 : e ≠ 0 := norm_pos_iff.1 (ε0.trans he)
calc
@@ -286,11 +286,12 @@ section SeminormedRing
variable [SeminormedRing α]
+set_option synthInstance.etaExperiment true in
/-- A subalgebra of a seminormed ring is also a seminormed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
-instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [SeminormedRing E]
- {_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : SeminormedRing s :=
+instance Subalgebra.seminormedRing {𝕜 : Type _} [CommRing 𝕜] {E : Type _} [SeminormedRing E]
+ [Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : SeminormedRing s :=
{ s.toSubmodule.seminormedAddCommGroup, s.toRing with
norm_mul := fun a b => norm_mul_le a.1 b.1 }
#align subalgebra.semi_normed_ring Subalgebra.seminormedRing
@@ -298,8 +299,8 @@ instance Subalgebra.seminormedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type
/-- A subalgebra of a normed ring is also a normed ring, with the restriction of the norm.
See note [implicit instance arguments]. -/
-instance Subalgebra.normedRing {𝕜 : Type _} {_ : CommRing 𝕜} {E : Type _} [NormedRing E]
- {_ : Algebra 𝕜 E} (s : Subalgebra 𝕜 E) : NormedRing s :=
+instance Subalgebra.normedRing {𝕜 : Type _} [CommRing 𝕜] {E : Type _} [NormedRing E]
+ [Algebra 𝕜 E] (s : Subalgebra 𝕜 E) : NormedRing s :=
{ s.seminormedRing with
eq_of_dist_eq_zero := eq_of_dist_eq_zero }
#align subalgebra.normed_ring Subalgebra.normedRing
@@ -274,7 +274,7 @@ instance Pi.nonUnitalSeminormedRing {π : ι → Type _} [Fintype ι]
#align pi.non_unital_semi_normed_ring Pi.nonUnitalSeminormedRing
instance MulOpposite.nonUnitalSeminormedRing : NonUnitalSeminormedRing αᵐᵒᵖ :=
- { MulOpposite.seminormedAddCommGroup, MulOpposite.instNonUnitalRingMulOpposite α with
+ { MulOpposite.seminormedAddCommGroup, MulOpposite.nonUnitalRing α with
norm_mul :=
MulOpposite.rec' fun x =>
MulOpposite.rec' fun y => (norm_mul_le y x).trans_eq (mul_comm _ _) }
@@ -404,7 +404,7 @@ instance Pi.seminormedRing {π : ι → Type _} [Fintype ι] [∀ i, SeminormedR
#align pi.semi_normed_ring Pi.seminormedRing
instance MulOpposite.seminormedRing : SeminormedRing αᵐᵒᵖ :=
- { MulOpposite.nonUnitalSeminormedRing, MulOpposite.instRingMulOpposite α with }
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.ring α with }
#align mul_opposite.semi_normed_ring MulOpposite.seminormedRing
end SeminormedRing
congr!
and convert
(#2606)
congr!
, convert
, and convert_to
to control parts of the congruence algorithm, in particular transparency settings when applying congruence lemmas.congr!
now applies congruence lemmas with reducible transparency by default. This prevents it from unfolding definitions when applying congruence lemmas. It also now tries both the LHS-biased and RHS-biased simp congruence lemmas, with a configuration option to set which it should try first.HEq
congruence lemma generator that gives each hypothesis access to the proofs of previous hypotheses. This means that if you have an equality ⊢ ⟨a, x⟩ = ⟨b, y⟩
of sigma types, congr!
turns this into goals ⊢ a = b
and ⊢ a = b → HEq x y
(note that congr!
will also auto-introduce a = b
for you in the second goal). This congruence lemma generator applies to more cases than the simp congruence lemma generator does.congr!
(and hence convert
) are more careful about applying lemmas that don't force definitions to unfold. There were a number of cases in mathlib where the implementation of congr
was being abused to unfold definitions.set_option trace.congr! true
you can see what congr!
sees when it is deciding on congruence lemmas.convert_to
to do using 1
when there is no using
clause, to match its documentation.Note that congr!
is more capable than congr
at finding a way to equate left-hand sides and right-hand sides, so you will frequently need to limit its depth with a using
clause. However, there is also a new heuristic to prevent considering unlikely-to-be-provable type equalities (controlled by the typeEqs
option), which can help limit the depth automatically.
There is also a predefined configuration that you can invoke with, for example, convert (config := .unfoldSameFun) h
, that causes it to behave more like congr
, including using default transparency when unfolding.
@@ -231,7 +231,7 @@ theorem mulLeft_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulLeft x y‖ ≤
/-- In a seminormed ring, the right-multiplication `AddMonoidHom` is bounded. -/
theorem mulRight_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulRight x y‖ ≤ ‖x‖ * ‖y‖ := fun y => by
rw [mul_comm]
- convert norm_mul_le y x
+ exact norm_mul_le y x
#align mul_right_bound mulRight_bound
instance ULift.nonUnitalSeminormedRing : NonUnitalSeminormedRing (ULift α) :=
@@ -126,7 +126,7 @@ instance (priority := 100) NormedCommRing.toSeminormedCommRing [β : NormedCommR
{ β with }
#align normed_comm_ring.to_semi_normed_comm_ring NormedCommRing.toSeminormedCommRing
-instance PUint.normedCommRing : NormedCommRing PUnit :=
+instance PUnit.normedCommRing : NormedCommRing PUnit :=
{ PUnit.normedAddCommGroup, PUnit.commRing with
norm_mul := fun _ _ => by simp }
@@ -216,12 +216,12 @@ theorem Filter.Tendsto.zero_mul_isBoundedUnder_le {f g : ι → α} {l : Filter
hf.op_zero_isBoundedUnder_le hg (· * ·) norm_mul_le
#align filter.tendsto.zero_mul_is_bounded_under_le Filter.Tendsto.zero_mul_isBoundedUnder_le
-theorem Filter.IsBoundedUnder_le.mul_tendsto_zero {f g : ι → α} {l : Filter ι}
+theorem Filter.isBoundedUnder_le_mul_tendsto_zero {f g : ι → α} {l : Filter ι}
(hf : IsBoundedUnder (· ≤ ·) l (norm ∘ f)) (hg : Tendsto g l (𝓝 0)) :
Tendsto (fun x => f x * g x) l (𝓝 0) :=
hg.op_zero_isBoundedUnder_le hf (flip (· * ·)) fun x y =>
(norm_mul_le y x).trans_eq (mul_comm _ _)
-#align filter.is_bounded_under_le.mul_tendsto_zero Filter.IsBoundedUnder_le.mul_tendsto_zero
+#align filter.is_bounded_under_le.mul_tendsto_zero Filter.isBoundedUnder_le_mul_tendsto_zero
/-- In a seminormed ring, the left-multiplication `AddMonoidHom` is bounded. -/
theorem mulLeft_bound (x : α) : ∀ y : α, ‖AddMonoidHom.mulLeft x y‖ ≤ ‖x‖ * ‖y‖ :=
@@ -359,7 +359,7 @@ theorem Finset.nnnorm_prod_le {α : Type _} [NormedCommRing α] [NormOneClass α
/-- If `α` is a seminormed ring, then `‖a ^ n‖₊ ≤ ‖a‖₊ ^ n` for `n > 0`.
See also `nnnorm_pow_le`. -/
theorem nnnorm_pow_le' (a : α) : ∀ {n : ℕ}, 0 < n → ‖a ^ n‖₊ ≤ ‖a‖₊ ^ n
- | 1, _ => by simp only [pow_one]; rfl
+ | 1, _ => by simp only [pow_one, le_rfl]
| n + 2, _ => by
simpa only [pow_succ _ (n + 1)] using
le_trans (nnnorm_mul_le _ _) (mul_le_mul_left' (nnnorm_pow_le' a n.succ_pos) _)
@@ -481,7 +481,7 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
-- porting note: `ENNReal.{mul_sub, sub_mul}` should be protected
_ ≤ ‖e.1‖ * ‖e.2 - x.2‖ + ‖e.1 - x.1‖ * ‖x.2‖ :=
norm_add_le_of_le (norm_mul_le _ _) (norm_mul_le _ _)
- refine' squeeze_zero (fun e => norm_nonneg _) this _
+ refine squeeze_zero (fun e => norm_nonneg _) this ?_
-- porting note: the new `convert` sucks, it's way too dumb without using the type
-- of the goal to figure out how to match things up. The rest of this proof was:
/- convert
@@ -492,16 +492,16 @@ instance (priority := 100) semi_normed_ring_top_monoid [NonUnitalSeminormedRing
exact tendsto_const_nhds
simp -/
rw [←zero_add 0]
- refine' Tendsto.add _ _
- rw [←mul_zero (‖x.fst‖)]
- refine' Filter.Tendsto.mul _ _
- exact (continuous_fst.tendsto x).norm
- rw [←norm_zero (E := α), ←sub_self x.snd]
- exact ((continuous_snd.tendsto x).sub tendsto_const_nhds).norm
- rw [←zero_mul (‖x.snd‖)]
- refine' Filter.Tendsto.mul _ tendsto_const_nhds
- rw [←norm_zero (E := α), ←sub_self x.fst]
- exact ((continuous_fst.tendsto x).sub tendsto_const_nhds).norm⟩
+ refine Tendsto.add ?_ ?_
+ · rw [←mul_zero (‖x.fst‖)]
+ refine Filter.Tendsto.mul ?_ ?_
+ · exact (continuous_fst.tendsto x).norm
+ · rw [←norm_zero (E := α), ←sub_self x.snd]
+ exact ((continuous_snd.tendsto x).sub tendsto_const_nhds).norm
+ · rw [←zero_mul (‖x.snd‖)]
+ refine' Filter.Tendsto.mul _ tendsto_const_nhds
+ rw [←norm_zero (E := α), ←sub_self x.fst]
+ exact ((continuous_fst.tendsto x).sub tendsto_const_nhds).norm⟩
#align semi_normed_ring_top_monoid semi_normed_ring_top_monoid
-- see Note [lower instance priority]
@@ -700,8 +700,8 @@ section NormedField
/-- A densely normed field is always a nontrivially normed field.
See note [lower instance priority]. -/
instance (priority := 100) DenselyNormedField.toNontriviallyNormedField [DenselyNormedField α] :
- NontriviallyNormedField α
- where non_trivial :=
+ NontriviallyNormedField α where
+ non_trivial :=
let ⟨a, h, _⟩ := DenselyNormedField.lt_norm_lt 1 2 zero_le_one one_lt_two
⟨a, h⟩
#align densely_normed_field.to_nontrivially_normed_field DenselyNormedField.toNontriviallyNormedField
@@ -788,15 +788,15 @@ theorem exists_lt_nnnorm_lt {r₁ r₂ : ℝ≥0} (h : r₁ < r₂) : ∃ x : α
instance denselyOrdered_range_norm : DenselyOrdered (Set.range (norm : α → ℝ)) where
dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
- exact let ⟨z, h⟩ := exists_lt_norm_lt α (norm_nonneg _) hxy
- ⟨⟨‖z‖, z, rfl⟩, h⟩
+ let ⟨z, h⟩ := exists_lt_norm_lt α (norm_nonneg _) hxy
+ exact ⟨⟨‖z‖, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_norm NormedField.denselyOrdered_range_norm
instance denselyOrdered_range_nnnorm : DenselyOrdered (Set.range (nnnorm : α → ℝ≥0)) where
dense := by
rintro ⟨-, x, rfl⟩ ⟨-, y, rfl⟩ hxy
- exact let ⟨z, h⟩ := exists_lt_nnnorm_lt α hxy
- ⟨⟨‖z‖₊, z, rfl⟩, h⟩
+ let ⟨z, h⟩ := exists_lt_nnnorm_lt α hxy
+ exact ⟨⟨‖z‖₊, z, rfl⟩, h⟩
#align normed_field.densely_ordered_range_nnnorm NormedField.denselyOrdered_range_nnnorm
theorem denseRange_nnnorm : DenseRange (nnnorm : α → ℝ≥0) :=
@@ -816,8 +816,8 @@ noncomputable instance Real.normedField : NormedField ℝ :=
{ Real.normedAddCommGroup, Real.field with
norm_mul' := abs_mul }
-noncomputable instance Real.denselyNormedField : DenselyNormedField ℝ
- where lt_norm_lt _ _ h₀ hr :=
+noncomputable instance Real.denselyNormedField : DenselyNormedField ℝ where
+ lt_norm_lt _ _ h₀ hr :=
let ⟨x, h⟩ := exists_between hr
⟨x, by rwa [Real.norm_eq_abs, abs_of_nonneg (h₀.trans h.1.le)]⟩
@@ -825,9 +825,8 @@ namespace Real
theorem toNNReal_mul_nnnorm {x : ℝ} (y : ℝ) (hx : 0 ≤ x) : x.toNNReal * ‖y‖₊ = ‖x * y‖₊ := by
ext
- simp only [NNReal.coe_mul, nnnorm_mul, coe_nnnorm]
- rw [Real.toNNReal_of_nonneg hx, norm_of_nonneg hx]
- rfl
+ simp only [NNReal.coe_mul, nnnorm_mul, coe_nnnorm, Real.toNNReal_of_nonneg, norm_of_nonneg, hx,
+ coe_mk]
#align real.to_nnreal_mul_nnnorm Real.toNNReal_mul_nnnorm
theorem nnnorm_mul_toNNReal (x : ℝ) {y : ℝ} (hy : 0 ≤ y) : ‖x‖₊ * y.toNNReal = ‖x * y‖₊ := by
@@ -892,9 +891,7 @@ instance Rat.normedField : NormedField ℚ :=
instance Rat.denselyNormedField : DenselyNormedField ℚ where
lt_norm_lt r₁ r₂ h₀ hr :=
let ⟨q, h⟩ := exists_rat_btwn hr
- ⟨q, by
- show _ < |(q : ℝ)| ∧ |(q : ℝ)| < _
- rwa [abs_of_pos (h₀.trans_lt h.1)]⟩
+ ⟨q, by rwa [←Rat.norm_cast_real, Real.norm_eq_abs, abs_of_pos (h₀.trans_lt h.1)]⟩
section RingHomIsometric
variable {R₁ : Type _} {R₂ : Type _} {R₃ : Type _}
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