analysis.normed_space.enorm
β·
Mathlib.Analysis.NormedSpace.ENorm
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -162,7 +162,7 @@ noncomputable instance : Top (ENorm π V) :=
simpa [hx, hy] using hxy
map_smul_le' := fun c x =>
by
- split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
+ split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
Β· simp only [MulZeroClass.mul_zero, le_refl]
Β· have : c = 0 := by tauto
simp [this]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-/
-import Mathbin.Analysis.NormedSpace.Basic
+import Analysis.NormedSpace.Basic
#align_import analysis.normed_space.enorm from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module analysis.normed_space.enorm
-! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.NormedSpace.Basic
+#align_import analysis.normed_space.enorm from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
+
/-!
# Extended norm
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -69,20 +69,27 @@ theorem coeFn_injective : Function.Injective (coeFn : ENorm π V β V β β
#align enorm.coe_fn_injective ENorm.coeFn_injective
-/
+#print ENorm.ext /-
@[ext]
theorem ext {eβ eβ : ENorm π V} (h : β x, eβ x = eβ x) : eβ = eβ :=
coeFn_injective <| funext h
#align enorm.ext ENorm.ext
+-/
+#print ENorm.ext_iff /-
theorem ext_iff {eβ eβ : ENorm π V} : eβ = eβ β β x, eβ x = eβ x :=
β¨fun h x => h βΈ rfl, extβ©
#align enorm.ext_iff ENorm.ext_iff
+-/
+#print ENorm.coe_inj /-
@[simp, norm_cast]
theorem coe_inj {eβ eβ : ENorm π V} : (eβ : V β ββ₯0β) = eβ β eβ = eβ :=
coeFn_injective.eq_iff
#align enorm.coe_inj ENorm.coe_inj
+-/
+#print ENorm.map_smul /-
@[simp]
theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
le_antisymm (e.map_smul_le' c x) <| by
@@ -97,36 +104,49 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
one_mul] <;>
simp [hc]
#align enorm.map_smul ENorm.map_smul
+-/
+#print ENorm.map_zero /-
@[simp]
theorem map_zero : e 0 = 0 := by rw [β zero_smul π (0 : V), e.map_smul]; norm_num
#align enorm.map_zero ENorm.map_zero
+-/
+#print ENorm.eq_zero_iff /-
@[simp]
theorem eq_zero_iff {x : V} : e x = 0 β x = 0 :=
β¨e.eq_zero' x, fun h => h.symm βΈ e.map_zeroβ©
#align enorm.eq_zero_iff ENorm.eq_zero_iff
+-/
+#print ENorm.map_neg /-
@[simp]
theorem map_neg (x : V) : e (-x) = e x :=
calc
e (-x) = β(-1 : π)ββ * e x := by rw [β map_smul, neg_one_smul]
_ = e x := by simp
#align enorm.map_neg ENorm.map_neg
+-/
+#print ENorm.map_sub_rev /-
theorem map_sub_rev (x y : V) : e (x - y) = e (y - x) := by rw [β neg_sub, e.map_neg]
#align enorm.map_sub_rev ENorm.map_sub_rev
+-/
+#print ENorm.map_add_le /-
theorem map_add_le (x y : V) : e (x + y) β€ e x + e y :=
e.map_add_le' x y
#align enorm.map_add_le ENorm.map_add_le
+-/
+#print ENorm.map_sub_le /-
theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
calc
e (x - y) = e (x + -y) := by rw [sub_eq_add_neg]
_ β€ e x + e (-y) := (e.map_add_le x (-y))
_ = e x + e y := by rw [e.map_neg]
#align enorm.map_sub_le ENorm.map_sub_le
+-/
instance : PartialOrder (ENorm π V)
where
@@ -155,9 +175,11 @@ noncomputable instance : Top (ENorm π V) :=
noncomputable instance : Inhabited (ENorm π V) :=
β¨β€β©
+#print ENorm.top_map /-
theorem top_map {x : V} (hx : x β 0) : (β€ : ENorm π V) x = β€ :=
if_neg hx
#align enorm.top_map ENorm.top_map
+-/
noncomputable instance : OrderTop (ENorm π V)
where
@@ -179,15 +201,19 @@ noncomputable instance : SemilatticeSup (ENorm π V) :=
le_sup_right := fun eβ eβ x => le_max_right _ _
sup_le := fun eβ eβ eβ hβ hβ x => max_le (hβ x) (hβ x) }
+#print ENorm.coe_max /-
@[simp, norm_cast]
theorem coe_max (eβ eβ : ENorm π V) : β(eβ β eβ) = fun x => max (eβ x) (eβ x) :=
rfl
#align enorm.coe_max ENorm.coe_max
+-/
+#print ENorm.max_map /-
@[norm_cast]
theorem max_map (eβ eβ : ENorm π V) (x : V) : (eβ β eβ) x = max (eβ x) (eβ x) :=
rfl
#align enorm.max_map ENorm.max_map
+-/
#print ENorm.emetricSpace /-
/-- Structure of an `emetric_space` defined by an extended norm. -/
@@ -226,13 +252,17 @@ instance : MetricSpace e.finiteSubspace :=
change e (x - y) β β€
exact ne_top_of_le_ne_top (ENNReal.add_lt_top.2 β¨x.2, y.2β©).Ne (e.map_sub_le x y)
+#print ENorm.finite_dist_eq /-
theorem finite_dist_eq (x y : e.finiteSubspace) : dist x y = (e (x - y)).toReal :=
rfl
#align enorm.finite_dist_eq ENorm.finite_dist_eq
+-/
+#print ENorm.finite_edist_eq /-
theorem finite_edist_eq (x y : e.finiteSubspace) : edist x y = e (x - y) :=
rfl
#align enorm.finite_edist_eq ENorm.finite_edist_eq
+-/
/-- Normed group instance on `e.finite_subspace`. -/
instance : NormedAddCommGroup e.finiteSubspace :=
@@ -241,9 +271,11 @@ instance : NormedAddCommGroup e.finiteSubspace :=
norm := fun x => (e x).toReal
dist_eq := fun x y => rfl }
+#print ENorm.finite_norm_eq /-
theorem finite_norm_eq (x : e.finiteSubspace) : βxβ = (e x).toReal :=
rfl
#align enorm.finite_norm_eq ENorm.finite_norm_eq
+-/
/-- Normed space instance on `e.finite_subspace`. -/
instance : NormedSpace π e.finiteSubspace
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
! This file was ported from Lean 3 source module analysis.normed_space.enorm
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
+! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.NormedSpace.Basic
/-!
# Extended norm
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we define a structure `enorm π V` representing an extended norm (i.e., a norm that can
take the value `β`) on a vector space `V` over a normed field `π`. We do not use `class` for
an `enorm` because the same space can have more than one extended norm. For example, the space of
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -88,7 +88,6 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
(βcββ : ββ₯0β) * e x = βcββ * e (cβ»ΒΉ β’ c β’ x) := by rw [inv_smul_smulβ hc]
_ β€ βcββ * (βcβ»ΒΉββ * e (c β’ x)) := _
_ = e (c β’ x) := _
-
Β· exact mul_le_mul_left' (e.map_smul_le' _ _) _
Β·
rw [β mul_assoc, nnnorm_inv, ENNReal.coe_inv, ENNReal.mul_inv_cancel _ ENNReal.coe_ne_top,
@@ -110,7 +109,6 @@ theorem map_neg (x : V) : e (-x) = e x :=
calc
e (-x) = β(-1 : π)ββ * e x := by rw [β map_smul, neg_one_smul]
_ = e x := by simp
-
#align enorm.map_neg ENorm.map_neg
theorem map_sub_rev (x y : V) : e (x - y) = e (y - x) := by rw [β neg_sub, e.map_neg]
@@ -125,7 +123,6 @@ theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
e (x - y) = e (x + -y) := by rw [sub_eq_add_neg]
_ β€ e x + e (-y) := (e.map_add_le x (-y))
_ = e x + e y := by rw [e.map_neg]
-
#align enorm.map_sub_le ENorm.map_sub_le
instance : PartialOrder (ENorm π V)
@@ -201,7 +198,6 @@ def emetricSpace : EMetricSpace V where
calc
e (x - z) = e (x - y + (y - z)) := by rw [sub_add_sub_cancel]
_ β€ e (x - y) + e (y - z) := e.map_add_le (x - y) (y - z)
-
#align enorm.emetric_space ENorm.emetricSpace
-/
@@ -215,7 +211,6 @@ def finiteSubspace : Subspace π V where
calc
e (c β’ x) = βcββ * e x := e.map_smul c x
_ < β€ := ENNReal.mul_lt_top ENNReal.coe_ne_top hx.Ne
-
#align enorm.finite_subspace ENorm.finiteSubspace
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -42,39 +42,43 @@ attribute [local instance 1001] Classical.propDecidable
open scoped ENNReal
+#print ENorm /-
/-- Extended norm on a vector space. As in the case of normed spaces, we require only
`βc β’ xβ β€ βcβ * βxβ` in the definition, then prove an equality in `map_smul`. -/
-structure Enorm (π : Type _) (V : Type _) [NormedField π] [AddCommGroup V] [Module π V] where
+structure ENorm (π : Type _) (V : Type _) [NormedField π] [AddCommGroup V] [Module π V] where
toFun : V β ββ₯0β
eq_zero' : β x, to_fun x = 0 β x = 0
map_add_le' : β x y : V, to_fun (x + y) β€ to_fun x + to_fun y
map_smul_le' : β (c : π) (x : V), to_fun (c β’ x) β€ βcββ * to_fun x
-#align enorm Enorm
+#align enorm ENorm
+-/
-namespace Enorm
+namespace ENorm
-variable {π : Type _} {V : Type _} [NormedField π] [AddCommGroup V] [Module π V] (e : Enorm π V)
+variable {π : Type _} {V : Type _} [NormedField π] [AddCommGroup V] [Module π V] (e : ENorm π V)
-instance : CoeFun (Enorm π V) fun _ => V β ββ₯0β :=
- β¨Enorm.toFunβ©
+instance : CoeFun (ENorm π V) fun _ => V β ββ₯0β :=
+ β¨ENorm.toFunβ©
-theorem coeFn_injective : Function.Injective (coeFn : Enorm π V β V β ββ₯0β) := fun eβ eβ h => by
+#print ENorm.coeFn_injective /-
+theorem coeFn_injective : Function.Injective (coeFn : ENorm π V β V β ββ₯0β) := fun eβ eβ h => by
cases eβ <;> cases eβ <;> congr <;> exact h
-#align enorm.coe_fn_injective Enorm.coeFn_injective
+#align enorm.coe_fn_injective ENorm.coeFn_injective
+-/
@[ext]
-theorem ext {eβ eβ : Enorm π V} (h : β x, eβ x = eβ x) : eβ = eβ :=
+theorem ext {eβ eβ : ENorm π V} (h : β x, eβ x = eβ x) : eβ = eβ :=
coeFn_injective <| funext h
-#align enorm.ext Enorm.ext
+#align enorm.ext ENorm.ext
-theorem ext_iff {eβ eβ : Enorm π V} : eβ = eβ β β x, eβ x = eβ x :=
+theorem ext_iff {eβ eβ : ENorm π V} : eβ = eβ β β x, eβ x = eβ x :=
β¨fun h x => h βΈ rfl, extβ©
-#align enorm.ext_iff Enorm.ext_iff
+#align enorm.ext_iff ENorm.ext_iff
@[simp, norm_cast]
-theorem coe_inj {eβ eβ : Enorm π V} : (eβ : V β ββ₯0β) = eβ β eβ = eβ :=
+theorem coe_inj {eβ eβ : ENorm π V} : (eβ : V β ββ₯0β) = eβ β eβ = eβ :=
coeFn_injective.eq_iff
-#align enorm.coe_inj Enorm.coe_inj
+#align enorm.coe_inj ENorm.coe_inj
@[simp]
theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
@@ -90,16 +94,16 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
rw [β mul_assoc, nnnorm_inv, ENNReal.coe_inv, ENNReal.mul_inv_cancel _ ENNReal.coe_ne_top,
one_mul] <;>
simp [hc]
-#align enorm.map_smul Enorm.map_smul
+#align enorm.map_smul ENorm.map_smul
@[simp]
theorem map_zero : e 0 = 0 := by rw [β zero_smul π (0 : V), e.map_smul]; norm_num
-#align enorm.map_zero Enorm.map_zero
+#align enorm.map_zero ENorm.map_zero
@[simp]
theorem eq_zero_iff {x : V} : e x = 0 β x = 0 :=
β¨e.eq_zero' x, fun h => h.symm βΈ e.map_zeroβ©
-#align enorm.eq_zero_iff Enorm.eq_zero_iff
+#align enorm.eq_zero_iff ENorm.eq_zero_iff
@[simp]
theorem map_neg (x : V) : e (-x) = e x :=
@@ -107,14 +111,14 @@ theorem map_neg (x : V) : e (-x) = e x :=
e (-x) = β(-1 : π)ββ * e x := by rw [β map_smul, neg_one_smul]
_ = e x := by simp
-#align enorm.map_neg Enorm.map_neg
+#align enorm.map_neg ENorm.map_neg
theorem map_sub_rev (x y : V) : e (x - y) = e (y - x) := by rw [β neg_sub, e.map_neg]
-#align enorm.map_sub_rev Enorm.map_sub_rev
+#align enorm.map_sub_rev ENorm.map_sub_rev
theorem map_add_le (x y : V) : e (x + y) β€ e x + e y :=
e.map_add_le' x y
-#align enorm.map_add_le Enorm.map_add_le
+#align enorm.map_add_le ENorm.map_add_le
theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
calc
@@ -122,9 +126,9 @@ theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
_ β€ e x + e (-y) := (e.map_add_le x (-y))
_ = e x + e y := by rw [e.map_neg]
-#align enorm.map_sub_le Enorm.map_sub_le
+#align enorm.map_sub_le ENorm.map_sub_le
-instance : PartialOrder (Enorm π V)
+instance : PartialOrder (ENorm π V)
where
le eβ eβ := β x, eβ x β€ eβ x
le_refl e x := le_rfl
@@ -132,7 +136,7 @@ instance : PartialOrder (Enorm π V)
le_antisymm eβ eβ hββ hββ := ext fun x => le_antisymm (hββ x) (hββ x)
/-- The `enorm` sending each non-zero vector to infinity. -/
-noncomputable instance : Top (Enorm π V) :=
+noncomputable instance : Top (ENorm π V) :=
β¨{ toFun := fun x => if x = 0 then 0 else β€
eq_zero' := fun x => by split_ifs <;> simp [*]
map_add_le' := fun x y =>
@@ -148,20 +152,20 @@ noncomputable instance : Top (Enorm π V) :=
Β· tauto
Β· simp [hcx.1] }β©
-noncomputable instance : Inhabited (Enorm π V) :=
+noncomputable instance : Inhabited (ENorm π V) :=
β¨β€β©
-theorem top_map {x : V} (hx : x β 0) : (β€ : Enorm π V) x = β€ :=
+theorem top_map {x : V} (hx : x β 0) : (β€ : ENorm π V) x = β€ :=
if_neg hx
-#align enorm.top_map Enorm.top_map
+#align enorm.top_map ENorm.top_map
-noncomputable instance : OrderTop (Enorm π V)
+noncomputable instance : OrderTop (ENorm π V)
where
top := β€
le_top e x := if h : x = 0 then by simp [h] else by simp [top_map h]
-noncomputable instance : SemilatticeSup (Enorm π V) :=
- { Enorm.partialOrder with
+noncomputable instance : SemilatticeSup (ENorm π V) :=
+ { ENorm.partialOrder with
le := (Β· β€ Β·)
lt := (Β· < Β·)
sup := fun eβ eβ =>
@@ -176,15 +180,16 @@ noncomputable instance : SemilatticeSup (Enorm π V) :=
sup_le := fun eβ eβ eβ hβ hβ x => max_le (hβ x) (hβ x) }
@[simp, norm_cast]
-theorem coe_max (eβ eβ : Enorm π V) : β(eβ β eβ) = fun x => max (eβ x) (eβ x) :=
+theorem coe_max (eβ eβ : ENorm π V) : β(eβ β eβ) = fun x => max (eβ x) (eβ x) :=
rfl
-#align enorm.coe_max Enorm.coe_max
+#align enorm.coe_max ENorm.coe_max
@[norm_cast]
-theorem max_map (eβ eβ : Enorm π V) (x : V) : (eβ β eβ) x = max (eβ x) (eβ x) :=
+theorem max_map (eβ eβ : ENorm π V) (x : V) : (eβ β eβ) x = max (eβ x) (eβ x) :=
rfl
-#align enorm.max_map Enorm.max_map
+#align enorm.max_map ENorm.max_map
+#print ENorm.emetricSpace /-
/-- Structure of an `emetric_space` defined by an extended norm. -/
@[reducible]
def emetricSpace : EMetricSpace V where
@@ -197,8 +202,10 @@ def emetricSpace : EMetricSpace V where
e (x - z) = e (x - y + (y - z)) := by rw [sub_add_sub_cancel]
_ β€ e (x - y) + e (y - z) := e.map_add_le (x - y) (y - z)
-#align enorm.emetric_space Enorm.emetricSpace
+#align enorm.emetric_space ENorm.emetricSpace
+-/
+#print ENorm.finiteSubspace /-
/-- The subspace of vectors with finite enorm. -/
def finiteSubspace : Subspace π V where
carrier := {x | e x < β€}
@@ -209,7 +216,8 @@ def finiteSubspace : Subspace π V where
e (c β’ x) = βcββ * e x := e.map_smul c x
_ < β€ := ENNReal.mul_lt_top ENNReal.coe_ne_top hx.Ne
-#align enorm.finite_subspace Enorm.finiteSubspace
+#align enorm.finite_subspace ENorm.finiteSubspace
+-/
/-- Metric space structure on `e.finite_subspace`. We use `emetric_space.to_metric_space`
to ensure that this definition agrees with `e.emetric_space`. -/
@@ -222,11 +230,11 @@ instance : MetricSpace e.finiteSubspace :=
theorem finite_dist_eq (x y : e.finiteSubspace) : dist x y = (e (x - y)).toReal :=
rfl
-#align enorm.finite_dist_eq Enorm.finite_dist_eq
+#align enorm.finite_dist_eq ENorm.finite_dist_eq
theorem finite_edist_eq (x y : e.finiteSubspace) : edist x y = e (x - y) :=
rfl
-#align enorm.finite_edist_eq Enorm.finite_edist_eq
+#align enorm.finite_edist_eq ENorm.finite_edist_eq
/-- Normed group instance on `e.finite_subspace`. -/
instance : NormedAddCommGroup e.finiteSubspace :=
@@ -237,11 +245,11 @@ instance : NormedAddCommGroup e.finiteSubspace :=
theorem finite_norm_eq (x : e.finiteSubspace) : βxβ = (e x).toReal :=
rfl
-#align enorm.finite_norm_eq Enorm.finite_norm_eq
+#align enorm.finite_norm_eq ENorm.finite_norm_eq
/-- Normed space instance on `e.finite_subspace`. -/
instance : NormedSpace π e.finiteSubspace
where norm_smul_le c x := le_of_eq <| by simp [finite_norm_eq, ENNReal.toReal_mul]
-end Enorm
+end ENorm
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -200,9 +200,8 @@ def emetricSpace : EMetricSpace V where
#align enorm.emetric_space Enorm.emetricSpace
/-- The subspace of vectors with finite enorm. -/
-def finiteSubspace : Subspace π V
- where
- carrier := { x | e x < β€ }
+def finiteSubspace : Subspace π V where
+ carrier := {x | e x < β€}
zero_mem' := by simp
add_mem' x y hx hy := lt_of_le_of_lt (e.map_add_le x y) (ENNReal.add_lt_top.2 β¨hx, hyβ©)
smul_mem' c x (hx : _ < _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -141,7 +141,7 @@ noncomputable instance : Top (Enorm π V) :=
simpa [hx, hy] using hxy
map_smul_le' := fun c x =>
by
- split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
+ split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
Β· simp only [MulZeroClass.mul_zero, le_refl]
Β· have : c = 0 := by tauto
simp [this]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -40,7 +40,7 @@ noncomputable section
attribute [local instance 1001] Classical.propDecidable
-open ENNReal
+open scoped ENNReal
/-- Extended norm on a vector space. As in the case of normed spaces, we require only
`βc β’ xβ β€ βcβ * βxβ` in the definition, then prove an equality in `map_smul`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -93,9 +93,7 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
#align enorm.map_smul Enorm.map_smul
@[simp]
-theorem map_zero : e 0 = 0 := by
- rw [β zero_smul π (0 : V), e.map_smul]
- norm_num
+theorem map_zero : e 0 = 0 := by rw [β zero_smul π (0 : V), e.map_smul]; norm_num
#align enorm.map_zero Enorm.map_zero
@[simp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -38,7 +38,7 @@ normed space, extended norm
noncomputable section
-attribute [local instance] Classical.propDecidable
+attribute [local instance 1001] Classical.propDecidable
open ENNReal
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -144,7 +144,7 @@ noncomputable instance : Top (Enorm π V) :=
map_smul_le' := fun c x =>
by
split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
- Β· simp only [mul_zero, le_refl]
+ Β· simp only [MulZeroClass.mul_zero, le_refl]
Β· have : c = 0 := by tauto
simp [this]
Β· tauto
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -189,7 +189,7 @@ theorem max_map (eβ eβ : Enorm π V) (x : V) : (eβ β eβ) x = max (e
/-- Structure of an `emetric_space` defined by an extended norm. -/
@[reducible]
-def emetricSpace : EmetricSpace V where
+def emetricSpace : EMetricSpace V where
edist x y := e (x - y)
edist_self x := by simp
eq_of_edist_eq_zero x y := by simp [sub_eq_zero]
@@ -219,7 +219,7 @@ to ensure that this definition agrees with `e.emetric_space`. -/
instance : MetricSpace e.finiteSubspace :=
by
letI := e.emetric_space
- refine' EmetricSpace.toMetricSpace fun x y => _
+ refine' EMetricSpace.toMetricSpace fun x y => _
change e (x - y) β β€
exact ne_top_of_le_ne_top (ENNReal.add_lt_top.2 β¨x.2, y.2β©).Ne (e.map_sub_le x y)
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -121,7 +121,7 @@ theorem map_add_le (x y : V) : e (x + y) β€ e x + e y :=
theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
calc
e (x - y) = e (x + -y) := by rw [sub_eq_add_neg]
- _ β€ e x + e (-y) := e.map_add_le x (-y)
+ _ β€ e x + e (-y) := (e.map_add_le x (-y))
_ = e x + e y := by rw [e.map_neg]
#align enorm.map_sub_le Enorm.map_sub_le
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
! This file was ported from Lean 3 source module analysis.normed_space.enorm
-! leanprover-community/mathlib commit 17ef379e997badd73e5eabb4d38f11919ab3c4b3
+! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -85,7 +85,7 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
_ β€ βcββ * (βcβ»ΒΉββ * e (c β’ x)) := _
_ = e (c β’ x) := _
- Β· exact ENNReal.mul_le_mul le_rfl (e.map_smul_le' _ _)
+ Β· exact mul_le_mul_left' (e.map_smul_le' _ _) _
Β·
rw [β mul_assoc, nnnorm_inv, ENNReal.coe_inv, ENNReal.mul_inv_cancel _ ENNReal.coe_ne_top,
one_mul] <;>
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -40,7 +40,7 @@ noncomputable section
attribute [local instance] Classical.propDecidable
-open Ennreal
+open ENNReal
/-- Extended norm on a vector space. As in the case of normed spaces, we require only
`βc β’ xβ β€ βcβ * βxβ` in the definition, then prove an equality in `map_smul`. -/
@@ -85,9 +85,9 @@ theorem map_smul (c : π) (x : V) : e (c β’ x) = βcββ * e x :=
_ β€ βcββ * (βcβ»ΒΉββ * e (c β’ x)) := _
_ = e (c β’ x) := _
- Β· exact Ennreal.mul_le_mul le_rfl (e.map_smul_le' _ _)
+ Β· exact ENNReal.mul_le_mul le_rfl (e.map_smul_le' _ _)
Β·
- rw [β mul_assoc, nnnorm_inv, Ennreal.coe_inv, Ennreal.mul_inv_cancel _ Ennreal.coe_ne_top,
+ rw [β mul_assoc, nnnorm_inv, ENNReal.coe_inv, ENNReal.mul_inv_cancel _ ENNReal.coe_ne_top,
one_mul] <;>
simp [hc]
#align enorm.map_smul Enorm.map_smul
@@ -168,11 +168,11 @@ noncomputable instance : SemilatticeSup (Enorm π V) :=
lt := (Β· < Β·)
sup := fun eβ eβ =>
{ toFun := fun x => max (eβ x) (eβ x)
- eq_zero' := fun x h => eβ.eq_zero_iff.1 (Ennreal.max_eq_zero_iff.1 h).1
+ eq_zero' := fun x h => eβ.eq_zero_iff.1 (ENNReal.max_eq_zero_iff.1 h).1
map_add_le' := fun x y =>
max_le (le_trans (eβ.map_add_le _ _) <| add_le_add (le_max_left _ _) (le_max_left _ _))
(le_trans (eβ.map_add_le _ _) <| add_le_add (le_max_right _ _) (le_max_right _ _))
- map_smul_le' := fun c x => le_of_eq <| by simp only [map_smul, Ennreal.mul_max] }
+ map_smul_le' := fun c x => le_of_eq <| by simp only [map_smul, ENNReal.mul_max] }
le_sup_left := fun eβ eβ x => le_max_left _ _
le_sup_right := fun eβ eβ x => le_max_right _ _
sup_le := fun eβ eβ eβ hβ hβ x => max_le (hβ x) (hβ x) }
@@ -206,11 +206,11 @@ def finiteSubspace : Subspace π V
where
carrier := { x | e x < β€ }
zero_mem' := by simp
- add_mem' x y hx hy := lt_of_le_of_lt (e.map_add_le x y) (Ennreal.add_lt_top.2 β¨hx, hyβ©)
+ add_mem' x y hx hy := lt_of_le_of_lt (e.map_add_le x y) (ENNReal.add_lt_top.2 β¨hx, hyβ©)
smul_mem' c x (hx : _ < _) :=
calc
e (c β’ x) = βcββ * e x := e.map_smul c x
- _ < β€ := Ennreal.mul_lt_top Ennreal.coe_ne_top hx.Ne
+ _ < β€ := ENNReal.mul_lt_top ENNReal.coe_ne_top hx.Ne
#align enorm.finite_subspace Enorm.finiteSubspace
@@ -221,7 +221,7 @@ instance : MetricSpace e.finiteSubspace :=
letI := e.emetric_space
refine' EmetricSpace.toMetricSpace fun x y => _
change e (x - y) β β€
- exact ne_top_of_le_ne_top (Ennreal.add_lt_top.2 β¨x.2, y.2β©).Ne (e.map_sub_le x y)
+ exact ne_top_of_le_ne_top (ENNReal.add_lt_top.2 β¨x.2, y.2β©).Ne (e.map_sub_le x y)
theorem finite_dist_eq (x y : e.finiteSubspace) : dist x y = (e (x - y)).toReal :=
rfl
@@ -244,7 +244,7 @@ theorem finite_norm_eq (x : e.finiteSubspace) : βxβ = (e x).toReal :=
/-- Normed space instance on `e.finite_subspace`. -/
instance : NormedSpace π e.finiteSubspace
- where norm_smul_le c x := le_of_eq <| by simp [finite_norm_eq, Ennreal.toReal_mul]
+ where norm_smul_le c x := le_of_eq <| by simp [finite_norm_eq, ENNReal.toReal_mul]
end Enorm
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -120,7 +120,7 @@ theorem map_add_le (x y : V) : e (x + y) β€ e x + e y :=
theorem map_sub_le (x y : V) : e (x - y) β€ e x + e y :=
calc
e (x - y) = e (x + -y) := by rw [sub_eq_add_neg]
- _ β€ e x + e (-y) := (e.map_add_le x (-y))
+ _ β€ e x + e (-y) := e.map_add_le x (-y)
_ = e x + e y := by rw [e.map_neg]
#align enorm.map_sub_le ENorm.map_sub_le
This removes redundant field values of the form add := add
for smaller terms and less unfolding during unification.
A list of all files containing a structure instance of the form { a1, ... with x1 := val, ... }
where some xi
is a field of some aj
was generated by modifying the structure instance elaboration algorithm to print such overlaps to stdout in a custom toolchain.
Using that toolchain, I went through each file on the list and attempted to remove algebraic fields that overlapped and were redundant, eg add := add
and not toFun
(though some other ones did creep in). If things broke (which was the case in a couple of cases), I did not push further and reverted.
It is possible that pushing harder and trying to remove all redundant overlaps will yield further improvements.
@@ -225,8 +225,7 @@ theorem finite_edist_eq (x y : e.finiteSubspace) : edist x y = e (x - y) :=
/-- Normed group instance on `e.finiteSubspace`. -/
instance normedAddCommGroup : NormedAddCommGroup e.finiteSubspace :=
- { e.metricSpace,
- Submodule.addCommGroup _ with
+ { e.metricSpace with
norm := fun x => (e x).toReal
dist_eq := fun _ _ => rfl }
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -141,7 +141,7 @@ noncomputable instance : Top (ENorm π V) :=
map_smul_le' := fun c x => by
simp only
split_ifs with hcx hx hx <;> simp only [smul_eq_zero, not_or] at hcx
- Β· simp only [MulZeroClass.mul_zero, le_refl]
+ Β· simp only [mul_zero, le_refl]
Β· have : c = 0 := by tauto
simp [this]
Β· tauto
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -41,7 +41,7 @@ open ENNReal
/-- Extended norm on a vector space. As in the case of normed spaces, we require only
`βc β’ xβ β€ βcβ * βxβ` in the definition, then prove an equality in `map_smul`. -/
-structure ENorm (π : Type _) (V : Type _) [NormedField π] [AddCommGroup V] [Module π V] where
+structure ENorm (π : Type*) (V : Type*) [NormedField π] [AddCommGroup V] [Module π V] where
toFun : V β ββ₯0β
eq_zero' : β x, toFun x = 0 β x = 0
map_add_le' : β x y : V, toFun (x + y) β€ toFun x + toFun y
@@ -50,7 +50,7 @@ structure ENorm (π : Type _) (V : Type _) [NormedField π] [AddCommGroup V]
namespace ENorm
-variable {π : Type _} {V : Type _} [NormedField π] [AddCommGroup V] [Module π V] (e : ENorm π V)
+variable {π : Type*} {V : Type*} [NormedField π] [AddCommGroup V] [Module π V] (e : ENorm π V)
-- Porting note: added to appease norm_cast complaints
attribute [coe] ENorm.toFun
@@ -2,14 +2,11 @@
Copyright (c) 2020 Yury G. Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module analysis.normed_space.enorm
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.NormedSpace.Basic
+#align_import analysis.normed_space.enorm from "leanprover-community/mathlib"@"57ac39bd365c2f80589a700f9fbb664d3a1a30c2"
+
/-!
# Extended norm
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