analysis.normed_space.riesz_lemma
β·
Mathlib.Analysis.NormedSpace.RieszLemma
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -59,7 +59,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
have x_ne_yβ : x - yβ β F := by
by_contra h
have : x - yβ + yβ β F := F.add_mem h hyβF
- simp only [neg_add_cancel_right, sub_eq_add_neg] at this
+ simp only [neg_add_cancel_right, sub_eq_add_neg] at this
exact hx this
refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
have hyβy : yβ + y β F := F.add_mem hyβF hy
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -44,7 +44,30 @@ norms, since in general the existence of an element of norm exactly 1
is not guaranteed. For a variant giving an element with norm in `[1, R]`, see
`riesz_lemma_of_norm_lt`. -/
theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β x : E, x β F) {r : β}
- (hr : r < 1) : β xβ : E, xβ β F β§ β y β F, r * βxββ β€ βxβ - yβ := by classical
+ (hr : r < 1) : β xβ : E, xβ β F β§ β y β F, r * βxββ β€ βxβ - yβ := by
+ classical
+ obtain β¨x, hxβ© : β x : E, x β F := hF
+ let d := Metric.infDist x F
+ have hFn : (F : Set E).Nonempty := β¨_, F.zero_memβ©
+ have hdp : 0 < d :=
+ lt_of_le_of_ne Metric.infDist_nonneg fun heq => hx ((hFc.mem_iff_inf_dist_zero hFn).2 HEq.symm)
+ let r' := max r 2β»ΒΉ
+ have hr' : r' < 1 := by simp [r', hr]; norm_num
+ have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
+ have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
+ obtain β¨yβ, hyβF, hxyββ© : β y β F, dist x y < d / r' := (Metric.infDist_lt_iff hFn).mp hdlt
+ have x_ne_yβ : x - yβ β F := by
+ by_contra h
+ have : x - yβ + yβ β F := F.add_mem h hyβF
+ simp only [neg_add_cancel_right, sub_eq_add_neg] at this
+ exact hx this
+ refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
+ have hyβy : yβ + y β F := F.add_mem hyβF hy
+ calc
+ r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
+ _ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
+ _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
+ _ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
#align riesz_lemma riesz_lemma
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -44,30 +44,7 @@ norms, since in general the existence of an element of norm exactly 1
is not guaranteed. For a variant giving an element with norm in `[1, R]`, see
`riesz_lemma_of_norm_lt`. -/
theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β x : E, x β F) {r : β}
- (hr : r < 1) : β xβ : E, xβ β F β§ β y β F, r * βxββ β€ βxβ - yβ := by
- classical
- obtain β¨x, hxβ© : β x : E, x β F := hF
- let d := Metric.infDist x F
- have hFn : (F : Set E).Nonempty := β¨_, F.zero_memβ©
- have hdp : 0 < d :=
- lt_of_le_of_ne Metric.infDist_nonneg fun heq => hx ((hFc.mem_iff_inf_dist_zero hFn).2 HEq.symm)
- let r' := max r 2β»ΒΉ
- have hr' : r' < 1 := by simp [r', hr]; norm_num
- have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
- have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
- obtain β¨yβ, hyβF, hxyββ© : β y β F, dist x y < d / r' := (Metric.infDist_lt_iff hFn).mp hdlt
- have x_ne_yβ : x - yβ β F := by
- by_contra h
- have : x - yβ + yβ β F := F.add_mem h hyβF
- simp only [neg_add_cancel_right, sub_eq_add_neg] at this
- exact hx this
- refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
- have hyβy : yβ + y β F := F.add_mem hyβF hy
- calc
- r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
- _ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
- _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
- _ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
+ (hr : r < 1) : β xβ : E, xβ β F β§ β y β F, r * βxββ β€ βxβ - yβ := by classical
#align riesz_lemma riesz_lemma
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2019 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo, Yury Kudryashov
-/
-import Mathbin.Analysis.NormedSpace.Basic
-import Mathbin.Topology.MetricSpace.HausdorffDistance
+import Analysis.NormedSpace.Basic
+import Topology.MetricSpace.HausdorffDistance
#align_import analysis.normed_space.riesz_lemma from "leanprover-community/mathlib"@"9a48a083b390d9b84a71efbdc4e8dfa26a687104"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2019 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo, Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.normed_space.riesz_lemma
-! leanprover-community/mathlib commit 9a48a083b390d9b84a71efbdc4e8dfa26a687104
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.NormedSpace.Basic
import Mathbin.Topology.MetricSpace.HausdorffDistance
+#align_import analysis.normed_space.riesz_lemma from "leanprover-community/mathlib"@"9a48a083b390d9b84a71efbdc4e8dfa26a687104"
+
/-!
# Applications of the Hausdorff distance in normed spaces
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -39,6 +39,7 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace π E]
variable {F : Type _} [SeminormedAddCommGroup F] [NormedSpace β F]
+#print riesz_lemma /-
/-- Riesz's lemma, which usually states that it is possible to find a
vector with norm 1 whose distance to a closed proper subspace is
arbitrarily close to 1. The statement here is in terms of multiples of
@@ -71,7 +72,9 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
_ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
#align riesz_lemma riesz_lemma
+-/
+#print riesz_lemma_of_norm_lt /-
/--
A version of Riesz lemma: given a strict closed subspace `F`, one may find an element of norm `β€ R`
which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
@@ -105,6 +108,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
(mul_le_mul_of_nonneg_left (hx y' (by simp [hy', Submodule.smul_mem _ _ hy])) (norm_nonneg _))
_ = βd β’ x - yβ := by simp [yy', β smul_sub, norm_smul]
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
+-/
#print Metric.closedBall_infDist_compl_subset_closure /-
theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx : x β s) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -70,7 +70,6 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
_ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
_ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
-
#align riesz_lemma riesz_lemma
/--
@@ -105,7 +104,6 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
_ β€ βdβ * βx - y'β :=
(mul_le_mul_of_nonneg_left (hx y' (by simp [hy', Submodule.smul_mem _ _ hy])) (norm_nonneg _))
_ = βd β’ x - yβ := by simp [yy', β smul_sub, norm_smul]
-
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
#print Metric.closedBall_infDist_compl_subset_closure /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -48,30 +48,29 @@ is not guaranteed. For a variant giving an element with norm in `[1, R]`, see
theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β x : E, x β F) {r : β}
(hr : r < 1) : β xβ : E, xβ β F β§ β y β F, r * βxββ β€ βxβ - yβ := by
classical
- obtain β¨x, hxβ© : β x : E, x β F := hF
- let d := Metric.infDist x F
- have hFn : (F : Set E).Nonempty := β¨_, F.zero_memβ©
- have hdp : 0 < d :=
- lt_of_le_of_ne Metric.infDist_nonneg fun heq =>
- hx ((hFc.mem_iff_inf_dist_zero hFn).2 HEq.symm)
- let r' := max r 2β»ΒΉ
- have hr' : r' < 1 := by simp [r', hr]; norm_num
- have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
- have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
- obtain β¨yβ, hyβF, hxyββ© : β y β F, dist x y < d / r' := (Metric.infDist_lt_iff hFn).mp hdlt
- have x_ne_yβ : x - yβ β F := by
- by_contra h
- have : x - yβ + yβ β F := F.add_mem h hyβF
- simp only [neg_add_cancel_right, sub_eq_add_neg] at this
- exact hx this
- refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
- have hyβy : yβ + y β F := F.add_mem hyβF hy
- calc
- r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
- _ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
- _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
- _ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
-
+ obtain β¨x, hxβ© : β x : E, x β F := hF
+ let d := Metric.infDist x F
+ have hFn : (F : Set E).Nonempty := β¨_, F.zero_memβ©
+ have hdp : 0 < d :=
+ lt_of_le_of_ne Metric.infDist_nonneg fun heq => hx ((hFc.mem_iff_inf_dist_zero hFn).2 HEq.symm)
+ let r' := max r 2β»ΒΉ
+ have hr' : r' < 1 := by simp [r', hr]; norm_num
+ have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
+ have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
+ obtain β¨yβ, hyβF, hxyββ© : β y β F, dist x y < d / r' := (Metric.infDist_lt_iff hFn).mp hdlt
+ have x_ne_yβ : x - yβ β F := by
+ by_contra h
+ have : x - yβ + yβ β F := F.add_mem h hyβF
+ simp only [neg_add_cancel_right, sub_eq_add_neg] at this
+ exact hx this
+ refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
+ have hyβy : yβ + y β F := F.add_mem hyβF hy
+ calc
+ r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
+ _ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
+ _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
+ _ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
+
#align riesz_lemma riesz_lemma
/--
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -62,7 +62,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
have x_ne_yβ : x - yβ β F := by
by_contra h
have : x - yβ + yβ β F := F.add_mem h hyβF
- simp only [neg_add_cancel_right, sub_eq_add_neg] at this
+ simp only [neg_add_cancel_right, sub_eq_add_neg] at this
exact hx this
refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
have hyβy : yβ + y β F := F.add_mem hyβF hy
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -31,7 +31,7 @@ the closure of a set `s` of optimal distance from a point in `x` to the frontier
open Set Metric
-open Topology
+open scoped Topology
variable {π : Type _} [NormedField π]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -39,9 +39,6 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace π E]
variable {F : Type _} [SeminormedAddCommGroup F] [NormedSpace β F]
-/- warning: riesz_lemma -> riesz_lemma is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align riesz_lemma riesz_lemmaβ'. -/
/-- Riesz's lemma, which usually states that it is possible to find a
vector with norm 1 whose distance to a closed proper subspace is
arbitrarily close to 1. The statement here is in terms of multiples of
@@ -77,12 +74,6 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
#align riesz_lemma riesz_lemma
-/- warning: riesz_lemma_of_norm_lt -> riesz_lemma_of_norm_lt is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : NormedField.{u1} π] {E : Type.{u2}} [_inst_2 : NormedAddCommGroup.{u2} E] [_inst_3 : NormedSpace.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)] {c : π}, (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} π _inst_1) c)) -> (forall {R : Real}, (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} π (NormedField.toHasNorm.{u1} π _inst_1) c) R) -> (forall {F : Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)}, (IsClosed.{u2} E (UniformSpace.toTopologicalSpace.{u2} E (PseudoMetricSpace.toUniformSpace.{u2} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (HasLiftT.mk.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (CoeTCβ.coe.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (SetLike.Set.hasCoeT.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))))) F)) -> (Exists.{succ u2} E (fun (x : E) => Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) x F))) -> (Exists.{succ u2} E (fun (xβ : E) => And (LE.le.{0} Real Real.hasLe (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) xβ) R) (forall (y : E), (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) (HSub.hSub.{u2, u2, u2} E E E (instHSub.{u2} E (SubNegMonoid.toHasSub.{u2} E (AddGroup.toSubNegMonoid.{u2} E (NormedAddGroup.toAddGroup.{u2} E (NormedAddCommGroup.toNormedAddGroup.{u2} E _inst_2))))) xβ y))))))))
-but is expected to have type
- forall {π : Type.{u2}} [_inst_1 : NormedField.{u2} π] {E : Type.{u1}} [_inst_2 : NormedAddCommGroup.{u1} E] [_inst_3 : NormedSpace.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)] {c : π}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u2} π (NormedField.toNorm.{u2} π _inst_1) c)) -> (forall {R : Real}, (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u2} π (NormedField.toNorm.{u2} π _inst_1) c) R) -> (forall {F : Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)}, (IsClosed.{u1} E (UniformSpace.toTopologicalSpace.{u1} E (PseudoMetricSpace.toUniformSpace.{u1} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)))) (SetLike.coe.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) F)) -> (Exists.{succ u1} E (fun (x : E) => Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) x F))) -> (Exists.{succ u1} E (fun (xβ : E) => And (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) xβ) R) (forall (y : E), (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) (HSub.hSub.{u1, u1, u1} E E E (instHSub.{u1} E (SubNegMonoid.toSub.{u1} E (AddGroup.toSubNegMonoid.{u1} E (NormedAddGroup.toAddGroup.{u1} E (NormedAddCommGroup.toNormedAddGroup.{u1} E _inst_2))))) xβ y))))))))
-Case conversion may be inaccurate. Consider using '#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_ltβ'. -/
/--
A version of Riesz lemma: given a strict closed subspace `F`, one may find an element of norm `β€ R`
which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -58,9 +58,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
lt_of_le_of_ne Metric.infDist_nonneg fun heq =>
hx ((hFc.mem_iff_inf_dist_zero hFn).2 HEq.symm)
let r' := max r 2β»ΒΉ
- have hr' : r' < 1 := by
- simp [r', hr]
- norm_num
+ have hr' : r' < 1 := by simp [r', hr]; norm_num
have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
obtain β¨yβ, hyβF, hxyββ© : β y β F, dist x y < d / r' := (Metric.infDist_lt_iff hFn).mp hdlt
@@ -73,9 +71,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
have hyβy : yβ + y β F := F.add_mem hyβF hy
calc
r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
- _ < d := by
- rw [β dist_eq_norm]
- exact (lt_div_iff' hlt).1 hxyβ
+ _ < d := by rw [β dist_eq_norm]; exact (lt_div_iff' hlt).1 hxyβ
_ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
@@ -102,9 +98,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
β xβ : E, βxββ β€ R β§ β y β F, 1 β€ βxβ - yβ :=
by
have Rpos : 0 < R := (norm_nonneg _).trans_lt hR
- have : βcβ / R < 1 := by
- rw [div_lt_iff Rpos]
- simpa using hR
+ have : βcβ / R < 1 := by rw [div_lt_iff Rpos]; simpa using hR
rcases riesz_lemma hFc hF this with β¨x, xF, hxβ©
have x0 : x β 0 := fun H => by simpa [H] using xF
obtain β¨d, d0, dxlt, ledx, -β© :
@@ -117,9 +111,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
calc
1 = βcβ / R * (R / βcβ) := by field_simp [Rpos.ne', (zero_lt_one.trans hc).ne']
_ β€ βcβ / R * βd β’ xβ := (mul_le_mul_of_nonneg_left ledx (div_nonneg (norm_nonneg _) Rpos.le))
- _ = βdβ * (βcβ / R * βxβ) := by
- simp [norm_smul]
- ring
+ _ = βdβ * (βcβ / R * βxβ) := by simp [norm_smul]; ring
_ β€ βdβ * βx - y'β :=
(mul_le_mul_of_nonneg_left (hx y' (by simp [hy', Submodule.smul_mem _ _ hy])) (norm_nonneg _))
_ = βd β’ x - yβ := by simp [yy', β smul_sub, norm_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -40,10 +40,7 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace π E]
variable {F : Type _} [SeminormedAddCommGroup F] [NormedSpace β F]
/- warning: riesz_lemma -> riesz_lemma is a dubious translation:
-lean 3 declaration is
- forall {π : Type.{u1}} [_inst_1 : NormedField.{u1} π] {E : Type.{u2}} [_inst_2 : NormedAddCommGroup.{u2} E] [_inst_3 : NormedSpace.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)] {F : Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)}, (IsClosed.{u2} E (UniformSpace.toTopologicalSpace.{u2} E (PseudoMetricSpace.toUniformSpace.{u2} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (HasLiftT.mk.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (CoeTCβ.coe.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (SetLike.Set.hasCoeT.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))))) F)) -> (Exists.{succ u2} E (fun (x : E) => Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) x F))) -> (forall {r : Real}, (LT.lt.{0} Real Real.hasLt r (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Exists.{succ u2} E (fun (xβ : E) => And (Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) xβ F)) (forall (y : E), (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.hasLe (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) r (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) xβ)) (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) (HSub.hSub.{u2, u2, u2} E E E (instHSub.{u2} E (SubNegMonoid.toHasSub.{u2} E (AddGroup.toSubNegMonoid.{u2} E (NormedAddGroup.toAddGroup.{u2} E (NormedAddCommGroup.toNormedAddGroup.{u2} E _inst_2))))) xβ y)))))))
-but is expected to have type
- forall {π : Type.{u2}} [_inst_1 : NormedField.{u2} π] {E : Type.{u1}} [_inst_2 : NormedAddCommGroup.{u1} E] [_inst_3 : NormedSpace.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)] {F : Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)}, (IsClosed.{u1} E (UniformSpace.toTopologicalSpace.{u1} E (PseudoMetricSpace.toUniformSpace.{u1} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)))) (SetLike.coe.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) F)) -> (Exists.{succ u1} E (fun (x : E) => Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) x F))) -> (forall {r : Real}, (LT.lt.{0} Real Real.instLTReal r (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Exists.{succ u1} E (fun (xβ : E) => And (Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) xβ F)) (forall (y : E), (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.instLEReal (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) r (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) xβ)) (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) (HSub.hSub.{u1, u1, u1} E E E (instHSub.{u1} E (SubNegMonoid.toSub.{u1} E (AddGroup.toSubNegMonoid.{u1} E (NormedAddGroup.toAddGroup.{u1} E (NormedAddCommGroup.toNormedAddGroup.{u1} E _inst_2))))) xβ y)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align riesz_lemma riesz_lemmaβ'. -/
/-- Riesz's lemma, which usually states that it is possible to find a
vector with norm 1 whose distance to a closed proper subspace is
mathlib commit https://github.com/leanprover-community/mathlib/commit/7ebf83ed9c262adbf983ef64d5e8c2ae94b625f4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo, Yury Kudryashov
! This file was ported from Lean 3 source module analysis.normed_space.riesz_lemma
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 9a48a083b390d9b84a71efbdc4e8dfa26a687104
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Topology.MetricSpace.HausdorffDistance
/-!
# Applications of the Hausdorff distance in normed spaces
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Riesz's lemma, stated for a normed space over a normed field: for any
closed proper subspace `F` of `E`, there is a nonzero `x` such that `βx - Fβ`
is at least `r * βxβ` for any `r < 1`. This is `riesz_lemma`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -36,6 +36,12 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace π E]
variable {F : Type _} [SeminormedAddCommGroup F] [NormedSpace β F]
+/- warning: riesz_lemma -> riesz_lemma is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : NormedField.{u1} π] {E : Type.{u2}} [_inst_2 : NormedAddCommGroup.{u2} E] [_inst_3 : NormedSpace.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)] {F : Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)}, (IsClosed.{u2} E (UniformSpace.toTopologicalSpace.{u2} E (PseudoMetricSpace.toUniformSpace.{u2} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (HasLiftT.mk.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (CoeTCβ.coe.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (SetLike.Set.hasCoeT.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))))) F)) -> (Exists.{succ u2} E (fun (x : E) => Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) x F))) -> (forall {r : Real}, (LT.lt.{0} Real Real.hasLt r (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Exists.{succ u2} E (fun (xβ : E) => And (Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) xβ F)) (forall (y : E), (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.hasLe (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) r (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) xβ)) (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) (HSub.hSub.{u2, u2, u2} E E E (instHSub.{u2} E (SubNegMonoid.toHasSub.{u2} E (AddGroup.toSubNegMonoid.{u2} E (NormedAddGroup.toAddGroup.{u2} E (NormedAddCommGroup.toNormedAddGroup.{u2} E _inst_2))))) xβ y)))))))
+but is expected to have type
+ forall {π : Type.{u2}} [_inst_1 : NormedField.{u2} π] {E : Type.{u1}} [_inst_2 : NormedAddCommGroup.{u1} E] [_inst_3 : NormedSpace.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)] {F : Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)}, (IsClosed.{u1} E (UniformSpace.toTopologicalSpace.{u1} E (PseudoMetricSpace.toUniformSpace.{u1} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)))) (SetLike.coe.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) F)) -> (Exists.{succ u1} E (fun (x : E) => Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) x F))) -> (forall {r : Real}, (LT.lt.{0} Real Real.instLTReal r (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Exists.{succ u1} E (fun (xβ : E) => And (Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) xβ F)) (forall (y : E), (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.instLEReal (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) r (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) xβ)) (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) (HSub.hSub.{u1, u1, u1} E E E (instHSub.{u1} E (SubNegMonoid.toSub.{u1} E (AddGroup.toSubNegMonoid.{u1} E (NormedAddGroup.toAddGroup.{u1} E (NormedAddCommGroup.toNormedAddGroup.{u1} E _inst_2))))) xβ y)))))))
+Case conversion may be inaccurate. Consider using '#align riesz_lemma riesz_lemmaβ'. -/
/-- Riesz's lemma, which usually states that it is possible to find a
vector with norm 1 whose distance to a closed proper subspace is
arbitrarily close to 1. The statement here is in terms of multiples of
@@ -75,6 +81,12 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
#align riesz_lemma riesz_lemma
+/- warning: riesz_lemma_of_norm_lt -> riesz_lemma_of_norm_lt is a dubious translation:
+lean 3 declaration is
+ forall {π : Type.{u1}} [_inst_1 : NormedField.{u1} π] {E : Type.{u2}} [_inst_2 : NormedAddCommGroup.{u2} E] [_inst_3 : NormedSpace.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)] {c : π}, (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} π _inst_1) c)) -> (forall {R : Real}, (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} π (NormedField.toHasNorm.{u1} π _inst_1) c) R) -> (forall {F : Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)}, (IsClosed.{u2} E (UniformSpace.toTopologicalSpace.{u2} E (PseudoMetricSpace.toUniformSpace.{u2} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u2} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (HasLiftT.mk.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (CoeTCβ.coe.{succ u2, succ u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (Set.{u2} E) (SetLike.Set.hasCoeT.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))))) F)) -> (Exists.{succ u2} E (fun (x : E) => Not (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) x F))) -> (Exists.{succ u2} E (fun (xβ : E) => And (LE.le.{0} Real Real.hasLe (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) xβ) R) (forall (y : E), (Membership.Mem.{u2, u2} E (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) (SetLike.hasMem.{u2, u2} (Subspace.{u1, u2} π E (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3)) E (Submodule.setLike.{u1, u2} π E (Ring.toSemiring.{u1} π (DivisionRing.toRing.{u1} π (NormedDivisionRing.toDivisionRing.{u1} π (NormedField.toNormedDivisionRing.{u1} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} E (NormedAddCommGroup.toAddCommGroup.{u2} E _inst_2)) (NormedSpace.toModule.{u1, u2} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u2} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Norm.norm.{u2} E (NormedAddCommGroup.toHasNorm.{u2} E _inst_2) (HSub.hSub.{u2, u2, u2} E E E (instHSub.{u2} E (SubNegMonoid.toHasSub.{u2} E (AddGroup.toSubNegMonoid.{u2} E (NormedAddGroup.toAddGroup.{u2} E (NormedAddCommGroup.toNormedAddGroup.{u2} E _inst_2))))) xβ y))))))))
+but is expected to have type
+ forall {π : Type.{u2}} [_inst_1 : NormedField.{u2} π] {E : Type.{u1}} [_inst_2 : NormedAddCommGroup.{u1} E] [_inst_3 : NormedSpace.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)] {c : π}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u2} π (NormedField.toNorm.{u2} π _inst_1) c)) -> (forall {R : Real}, (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u2} π (NormedField.toNorm.{u2} π _inst_1) c) R) -> (forall {F : Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)}, (IsClosed.{u1} E (UniformSpace.toTopologicalSpace.{u1} E (PseudoMetricSpace.toUniformSpace.{u1} E (SeminormedAddCommGroup.toPseudoMetricSpace.{u1} E (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2)))) (SetLike.coe.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) F)) -> (Exists.{succ u1} E (fun (x : E) => Not (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) x F))) -> (Exists.{succ u1} E (fun (xβ : E) => And (LE.le.{0} Real Real.instLEReal (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) xβ) R) (forall (y : E), (Membership.mem.{u1, u1} E (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) (SetLike.instMembership.{u1, u1} (Subspace.{u2, u1} π E (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)) (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3)) E (Submodule.setLike.{u2, u1} π E (DivisionSemiring.toSemiring.{u2} π (DivisionRing.toDivisionSemiring.{u2} π (NormedDivisionRing.toDivisionRing.{u2} π (NormedField.toNormedDivisionRing.{u2} π _inst_1)))) (AddCommGroup.toAddCommMonoid.{u1} E (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_2)) (NormedSpace.toModule.{u2, u1} π E _inst_1 (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_2) _inst_3))) y F) -> (LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Norm.norm.{u1} E (NormedAddCommGroup.toNorm.{u1} E _inst_2) (HSub.hSub.{u1, u1, u1} E E E (instHSub.{u1} E (SubNegMonoid.toSub.{u1} E (AddGroup.toSubNegMonoid.{u1} E (NormedAddGroup.toAddGroup.{u1} E (NormedAddCommGroup.toNormedAddGroup.{u1} E _inst_2))))) xβ y))))))))
+Case conversion may be inaccurate. Consider using '#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_ltβ'. -/
/--
A version of Riesz lemma: given a strict closed subspace `F`, one may find an element of norm `β€ R`
which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
@@ -114,6 +126,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
+#print Metric.closedBall_infDist_compl_subset_closure /-
theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx : x β s) :
closedBall x (infDist x (sαΆ)) β closure s :=
by
@@ -123,4 +136,5 @@ theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx :
Β· rw [β closure_ball x hβ]
exact closure_mono ball_inf_dist_compl_subset
#align metric.closed_ball_inf_dist_compl_subset_closure Metric.closedBall_infDist_compl_subset_closure
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -70,7 +70,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
_ < d := by
rw [β dist_eq_norm]
exact (lt_div_iff' hlt).1 hxyβ
- _ β€ dist x (yβ + y) := Metric.infDist_le_dist_of_mem hyβy
+ _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
#align riesz_lemma riesz_lemma
@@ -104,12 +104,12 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
have yy' : y = d β’ y' := by simp [hy', smul_smul, mul_inv_cancel d0]
calc
1 = βcβ / R * (R / βcβ) := by field_simp [Rpos.ne', (zero_lt_one.trans hc).ne']
- _ β€ βcβ / R * βd β’ xβ := mul_le_mul_of_nonneg_left ledx (div_nonneg (norm_nonneg _) Rpos.le)
+ _ β€ βcβ / R * βd β’ xβ := (mul_le_mul_of_nonneg_left ledx (div_nonneg (norm_nonneg _) Rpos.le))
_ = βdβ * (βcβ / R * βxβ) := by
simp [norm_smul]
ring
_ β€ βdβ * βx - y'β :=
- mul_le_mul_of_nonneg_left (hx y' (by simp [hy', Submodule.smul_mem _ _ hy])) (norm_nonneg _)
+ (mul_le_mul_of_nonneg_left (hx y' (by simp [hy', Submodule.smul_mem _ _ hy])) (norm_nonneg _))
_ = βd β’ x - yβ := by simp [yy', β smul_sub, norm_smul]
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -66,7 +66,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
_ < d := by
rw [β dist_eq_norm]
exact (lt_div_iff' hlt).1 hxyβ
- _ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
+ _ β€ dist x (yβ + y) := Metric.infDist_le_dist_of_mem hyβy
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
#align riesz_lemma riesz_lemma
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -29,9 +29,7 @@ open Set Metric
open Topology
variable {π : Type*} [NormedField π]
-
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace π E]
-
variable {F : Type*} [SeminormedAddCommGroup F] [NormedSpace β F]
/-- Riesz's lemma, which usually states that it is possible to find a
@@ -51,7 +51,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
hx ((hFc.mem_iff_infDist_zero hFn).2 heq.symm)
let r' := max r 2β»ΒΉ
have hr' : r' < 1 := by
- simp only [ge_iff_le, max_lt_iff, hr, true_and]
+ simp only [r', ge_iff_le, max_lt_iff, hr, true_and]
norm_num
have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
@@ -96,7 +96,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
rescale_to_shell hc Rpos x0
refine' β¨d β’ x, dxlt.le, fun y hy => _β©
set y' := dβ»ΒΉ β’ y
- have yy' : y = d β’ y' := by simp [smul_smul, mul_inv_cancel d0]
+ have yy' : y = d β’ y' := by simp [y', smul_smul, mul_inv_cancel d0]
calc
1 = βcβ / R * (R / βcβ) := by field_simp [Rpos.ne', (zero_lt_one.trans hc).ne']
_ β€ βcβ / R * βd β’ xβ := by gcongr
NormedSpace.Real
(#10206)
This way we don't switch between general normed spaces and real normed spaces back and forth throughout the file.
@@ -3,7 +3,7 @@ Copyright (c) 2019 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo, Yury Kudryashov
-/
-import Mathlib.Analysis.NormedSpace.Basic
+import Mathlib.Analysis.NormedSpace.Real
import Mathlib.Analysis.Seminorm
import Mathlib.Topology.MetricSpace.HausdorffDistance
cases'
(#9171)
I literally went through and regex'd some uses of cases'
, replacing them with rcases
; this is meant to be a low effort PR as I hope that tools can do this in the future.
rcases
is an easier replacement than cases
, though with better tools we could in future do a second pass converting simple rcases
added here (and existing ones) to cases
.
@@ -109,7 +109,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx : x β s) :
closedBall x (infDist x sαΆ) β closure s := by
- cases' eq_or_ne (infDist x sαΆ) 0 with hβ hβ
+ rcases eq_or_ne (infDist x sαΆ) 0 with hβ | hβ
Β· rw [hβ, closedBall_zero']
exact closure_mono (singleton_subset_iff.2 hx)
Β· rw [β closure_ball x hβ]
@@ -104,7 +104,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
simp only [norm_smul]
ring
_ β€ βdβ * βx - y'β := by gcongr; exact hx y' (by simp [Submodule.smul_mem _ _ hy])
- _ = βd β’ x - yβ := by rw [yy', βsmul_sub, norm_smul]
+ _ = βd β’ x - yβ := by rw [yy', β smul_sub, norm_smul]
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx : x β s) :
Removes nonterminal simps on lines looking like simp [...]
@@ -51,7 +51,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
hx ((hFc.mem_iff_infDist_zero hFn).2 heq.symm)
let r' := max r 2β»ΒΉ
have hr' : r' < 1 := by
- simp [hr]
+ simp only [ge_iff_le, max_lt_iff, hr, true_and]
norm_num
have hlt : 0 < r' := lt_of_lt_of_le (by norm_num) (le_max_right r 2β»ΒΉ)
have hdlt : d < d / r' := (lt_div_iff hlt).mpr ((mul_lt_iff_lt_one_right hdp).2 hr')
@@ -101,7 +101,7 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
1 = βcβ / R * (R / βcβ) := by field_simp [Rpos.ne', (zero_lt_one.trans hc).ne']
_ β€ βcβ / R * βd β’ xβ := by gcongr
_ = βdβ * (βcβ / R * βxβ) := by
- simp [norm_smul]
+ simp only [norm_smul]
ring
_ β€ βdβ * βx - y'β := by gcongr; exact hx y' (by simp [Submodule.smul_mem _ _ hy])
_ = βd β’ x - yβ := by rw [yy', βsmul_sub, norm_smul]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,11 +28,11 @@ open Set Metric
open Topology
-variable {π : Type _} [NormedField π]
+variable {π : Type*} [NormedField π]
-variable {E : Type _} [NormedAddCommGroup E] [NormedSpace π E]
+variable {E : Type*} [NormedAddCommGroup E] [NormedSpace π E]
-variable {F : Type _} [SeminormedAddCommGroup F] [NormedSpace β F]
+variable {F : Type*} [SeminormedAddCommGroup F] [NormedSpace β F]
/-- Riesz's lemma, which usually states that it is possible to find a
vector with norm 1 whose distance to a closed proper subspace is
@@ -2,16 +2,13 @@
Copyright (c) 2019 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo, Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.normed_space.riesz_lemma
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.NormedSpace.Basic
import Mathlib.Analysis.Seminorm
import Mathlib.Topology.MetricSpace.HausdorffDistance
+#align_import analysis.normed_space.riesz_lemma from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# Applications of the Hausdorff distance in normed spaces
@@ -111,8 +111,8 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx : x β s) :
- closedBall x (infDist x (sαΆ)) β closure s := by
- cases' eq_or_ne (infDist x (sαΆ)) 0 with hβ hβ
+ closedBall x (infDist x sαΆ) β closure s := by
+ cases' eq_or_ne (infDist x sαΆ) 0 with hβ hβ
Β· rw [hβ, closedBall_zero']
exact closure_mono (singleton_subset_iff.2 hx)
Β· rw [β closure_ball x hβ]
This shows that, if the topology of E
is defined by some family of seminorms p
, then a seminorm q
is continuous iff β s : Finset ΞΉ, β C : ββ₯0, C β 0 β§ q β€ C β’ s.sup p
. Via Seminorm.continuous_iff_continuous_comp this gives the converse of Seminorm.continuous_from_bounded and hence a characterization of continuous linear maps between such spaces.
To do that, we restate all of the "bound of shell" lemmas in terms of seminorms, which needs changing some imports, but I've checked the current state of the port and this should not cause too much trouble since most of the touched files are already ported so we can changes the imports in mathlib4 too.
The WithSeminorms
file needs a naming/dot notation refactor at some point, because the naming scheme is neither predictable nor convenient to use, but this PR is already large enough.
@@ -9,6 +9,7 @@ Authors: Jean Lo, Yury Kudryashov
! if you have ported upstream changes.
-/
import Mathlib.Analysis.NormedSpace.Basic
+import Mathlib.Analysis.Seminorm
import Mathlib.Topology.MetricSpace.HausdorffDistance
/-!
at
and goals (#5387)
Changes are of the form
some_tactic at hβ’
-> some_tactic at h β’
some_tactic at h
-> some_tactic at h
@@ -76,7 +76,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
/--
A version of Riesz lemma: given a strict closed subspace `F`, one may find an element of norm `β€ R`
-which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
+which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
strictly larger than the norm of an element of norm `> 1`. For a version without an `R`, see
`riesz_lemma`.
@@ -66,7 +66,7 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
refine' β¨x - yβ, x_ne_yβ, fun y hy => le_of_lt _β©
have hyβy : yβ + y β F := F.add_mem hyβF hy
calc
- r * βx - yββ β€ r' * βx - yββ := mul_le_mul_of_nonneg_right (le_max_left _ _) (norm_nonneg _)
+ r * βx - yββ β€ r' * βx - yββ := by gcongr; apply le_max_left
_ < d := by
rw [β dist_eq_norm]
exact (lt_div_iff' hlt).1 hxyβ
@@ -101,12 +101,11 @@ theorem riesz_lemma_of_norm_lt {c : π} (hc : 1 < βcβ) {R : β} (hR : β
have yy' : y = d β’ y' := by simp [smul_smul, mul_inv_cancel d0]
calc
1 = βcβ / R * (R / βcβ) := by field_simp [Rpos.ne', (zero_lt_one.trans hc).ne']
- _ β€ βcβ / R * βd β’ xβ := (mul_le_mul_of_nonneg_left ledx (div_nonneg (norm_nonneg _) Rpos.le))
+ _ β€ βcβ / R * βd β’ xβ := by gcongr
_ = βdβ * (βcβ / R * βxβ) := by
simp [norm_smul]
ring
- _ β€ βdβ * βx - y'β :=
- (mul_le_mul_of_nonneg_left (hx y' (by simp [Submodule.smul_mem _ _ hy])) (norm_nonneg _))
+ _ β€ βdβ * βx - y'β := by gcongr; exact hx y' (by simp [Submodule.smul_mem _ _ hy])
_ = βd β’ x - yβ := by rw [yy', βsmul_sub, norm_smul]
#align riesz_lemma_of_norm_lt riesz_lemma_of_norm_lt
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -72,7 +72,6 @@ theorem riesz_lemma {F : Subspace π E} (hFc : IsClosed (F : Set E)) (hF : β
exact (lt_div_iff' hlt).1 hxyβ
_ β€ dist x (yβ + y) := (Metric.infDist_le_dist_of_mem hyβy)
_ = βx - yβ - yβ := by rw [sub_sub, dist_eq_norm]
-
#align riesz_lemma riesz_lemma
/--
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