New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat(analysis/seminorm): The norm as a seminorm, balanced and absorbent lemmas #11487
Conversation
src/analysis/seminorm.lean
Outdated
def norm_seminorm : seminorm 𝕜 E := | ||
{ to_fun := norm, | ||
smul' := norm_smul, | ||
triangle' := norm_add_le } | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like this should belong into analysis/normed_space/basis
, but that would cause problems because that files contains the definition of normed_field
, which we need for seminorm
. But if that were not a problem, we could transfer quite a few lemmas from normed_space
to seminorm
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also we have the following code to make a seminorm into a semi_normed_space
:
instance (s : seminorm 𝕜 E) : has_norm s.domain := ⟨s.to_fun⟩
lemma is_core (s : seminorm 𝕜 E) : semi_normed_group.core s.domain :=
⟨s.zero, s.triangle, s.neg⟩
instance (s : seminorm 𝕜 E) : semi_normed_group s.domain :=
semi_normed_group.of_core s.domain s.is_core
lemma smul_le (s : seminorm 𝕜 E) (c : 𝕜) (x : E) : s (c • x) ≤ ∥c∥ * s x := by rw s.smul
instance (s : seminorm 𝕜 E) : semi_normed_space 𝕜 s.domain := {norm_smul_le := s.smul_le}
which implies that the two definitions are equivalent after #8218 is merged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a greater refactor to be done here, by making seminorm
the primitive thing. The original problem is that @riccardobrasca didn't know about seminorm
when first writing semi_normed_group
.
But I think this is out of scope for this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I totally agree that sooner or later we have to do the refactor to have only one notion of seminormed
stuff.
This PR/issue depends on: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 🎉
bors d+
✌️ YaelDillies can now approve this pull request. To approve and merge a pull request, simply reply with |
Thanks for reviewing! bors merge |
…nt lemmas (#11487) This * defines `norm_seminorm`, the norm as a seminorm. This is useful to translate seminorm lemmas to norm lemmas * proves many lemmas about `balanced`, `absorbs`, `absorbent` * generalizes many lemmas about the aforementioned predicates. In particular, `one_le_gauge_of_not_mem` now takes `(star_convex ℝ 0 s) (absorbs ℝ s {x})` instead of `(convex ℝ s) ((0 : E) ∈ s) (is_open s)`. The new `star_convex` lemmas justify that it's a generalization. * proves `star_convex_zero_iff` * proves `ne_zero_of_norm_ne_zero` and friends * makes `x` implicit in `convex.star_convex` * renames `balanced.univ` to `balanced_univ`
Pull request successfully merged into master. Build succeeded: |
…nt lemmas (#11487) This * defines `norm_seminorm`, the norm as a seminorm. This is useful to translate seminorm lemmas to norm lemmas * proves many lemmas about `balanced`, `absorbs`, `absorbent` * generalizes many lemmas about the aforementioned predicates. In particular, `one_le_gauge_of_not_mem` now takes `(star_convex ℝ 0 s) (absorbs ℝ s {x})` instead of `(convex ℝ s) ((0 : E) ∈ s) (is_open s)`. The new `star_convex` lemmas justify that it's a generalization. * proves `star_convex_zero_iff` * proves `ne_zero_of_norm_ne_zero` and friends * makes `x` implicit in `convex.star_convex` * renames `balanced.univ` to `balanced_univ`
…12624) Move `balanced`, `absorbs`, `absorbent` to a new file. For `analysis.seminorm`, I'm crediting * Jean for #4827 * myself for * #9097 * #11487 * Moritz for * #11329 * #11414 * #11477 For `analysis.locally_convex.basic`, I'm crediting * Jean for #4827 * Bhavik for * #7358 * #9097 * myself for * #9097 * #10999 * #11487
…12624) Move `balanced`, `absorbs`, `absorbent` to a new file. For `analysis.seminorm`, I'm crediting * Jean for #4827 * myself for * #9097 * #11487 * Moritz for * #11329 * #11414 * #11477 For `analysis.locally_convex.basic`, I'm crediting * Jean for #4827 * Bhavik for * #7358 * #9097 * myself for * #9097 * #10999 * #11487
This
norm_seminorm
, the norm as a seminorm. This is useful to translate seminorm lemmas to norm lemmasbalanced
,absorbs
,absorbent
one_le_gauge_of_not_mem
now takes(star_convex ℝ 0 s) (absorbs ℝ s {x})
instead of(convex ℝ s) ((0 : E) ∈ s) (is_open s)
. The newstar_convex
lemmas justify that it's a generalization.star_convex_zero_iff
ne_zero_of_norm_ne_zero
and friendsx
implicit inconvex.star_convex
balanced.univ
tobalanced_univ
@mcdoll, this might be of interest