Zulip Chat Archive

Stream: Is there code for X?

Topic: Bump functions


Patrick Massot (Feb 19 2022 at 17:57):

@Yury G. Kudryashov and @Sebastien Gouezel what is the status of smooth bump function in vector spaces? I can find a lot of topological stuff and some manifold stuff, but not the intermediate vector space notion. Specifically I have a compact set KK in a finite dimensional real vector space and a neighborhood UU of KK, do we have a smooth [0,1][0, 1]-value function which equals 11 near KK and has compact support inside UU?

Yury G. Kudryashov (Feb 19 2022 at 18:07):

You can use docs#exists_smooth_zero_one_of_closed

Yury G. Kudryashov (Feb 19 2022 at 18:08):

And use the fact that a vector space is a manifold.

Patrick Massot (Feb 19 2022 at 18:08):

Do you mean we actually have this for manifolds but not for vector spaces?

Patrick Massot (Feb 19 2022 at 18:09):

This doesn't seem reasonable to import manifold theory for this

Yury G. Kudryashov (Feb 19 2022 at 18:09):

We have bump function supported on a ball for a vector space.

Patrick Massot (Feb 19 2022 at 18:10):

I don't see how to prove this lemma for manifolds without having a simpler proof for vector spaces.

Yury G. Kudryashov (Feb 19 2022 at 18:11):

The proof for vector spaces (and closed sets, not closed balls) is the same as for manifolds.

Yury G. Kudryashov (Feb 19 2022 at 18:12):

The main lemma is docs#smooth_bump_covering.exists_is_subordinate.

Yury G. Kudryashov (Feb 19 2022 at 18:13):

Why importing manifolds is so bad?

Heather Macbeth (Feb 19 2022 at 18:13):

@Yury G. Kudryashov There's also https://leanprover-community.github.io/mathlib_docs/analysis/calculus/specific_functions.html right?

Yury G. Kudryashov (Feb 19 2022 at 18:14):

Yes but this is about bump functions supported on closed balls.

Yury G. Kudryashov (Feb 19 2022 at 18:14):

(more precisely, on closed balls in an unspecified Euclidean metric on your space)

Yury G. Kudryashov (Feb 19 2022 at 18:21):

@Patrick Massot You can repeat the proof for vector spaces using docs#times_cont_diff_bump if you want to avoid importing manifolds.

Yury G. Kudryashov (Feb 19 2022 at 18:22):

It will be a bit easier because you won't need to care about the manifold boundary.

Patrick Massot (Feb 19 2022 at 18:23):

Usually I don't mind crushing easy things with super general tools, but that one seems a bit too much

Yury G. Kudryashov (Feb 19 2022 at 18:25):

I would prefer not to have 2 theories of smooth partitions of unity in mathlib, one for vector spaces and one for manifolds.

Yury G. Kudryashov (Feb 19 2022 at 18:26):

Because it will be hard to maintain feature parity.

Patrick Massot (Feb 19 2022 at 18:28):

We'll have to restate things anyway

Patrick Massot (Feb 19 2022 at 18:29):

I'm not even really convince you could derive the statement I asked about from the manifold stuff we have.

Yury G. Kudryashov (Feb 19 2022 at 18:46):

Let me do it.

Yury G. Kudryashov (Feb 19 2022 at 18:51):

import geometry.manifold.partition_of_unity

open set
open_locale manifold

lemma exists_times_cont_diff_zero_one {E : Type*} [normed_group E]
  [normed_space  E] [finite_dimensional  E] {s t : set E} (hs : is_closed s)
  (ht : is_closed t) (hd : disjoint s t) :
   f : E  , times_cont_diff   f  eq_on f 0 s  eq_on f 1 t 
     x, f x  Icc (0 : ) 1 :=
let f, hfs, hft, hf01 := exists_smooth_zero_one_of_closed 𝓘(, E) hs ht hd
in f, f.smooth.times_cont_diff, hfs, hft, hf01

Yury G. Kudryashov (Feb 19 2022 at 18:52):

If you want the function to be 1 in a neighborhood of K, then you need to use some separation property first.

Yury G. Kudryashov (Feb 19 2022 at 18:53):

IMHO, this should be done for manifolds.

Yury G. Kudryashov (Feb 19 2022 at 18:58):

(I don't remember what are the minimal assumptions for existence of intermediate compact sets)

Patrick Massot (Feb 19 2022 at 19:29):

This is indeed easier than what I thought. The neighborhood question is independent from the question of going from manifolds to vector spaces.

Yury G. Kudryashov (Feb 19 2022 at 20:06):

Thanks @Sebastien Gouezel for writing such a good manifolds library.

Patrick Massot (Feb 27 2022 at 18:30):

I just tried to use this idea of pulling the whole manifold library to get bump functions in vector spaces. Unfortunately if also brings smooth_at in the root namespace. @Sebastien Gouezel do you think we could move this docs#smooth_at to some manifold specific namespace?

Sebastien Gouezel (Feb 27 2022 at 19:41):

Yes, sure!

Patrick Massot (Feb 27 2022 at 20:18):

Do you have a namespace to suggest?

Yury G. Kudryashov (Feb 27 2022 at 20:21):

We can just call it msmooth_at.

Yury G. Kudryashov (Feb 27 2022 at 20:22):

This will agree with mdifferentiable etc


Last updated: Dec 20 2023 at 11:08 UTC