Zulip Chat Archive
Stream: Is there code for X?
Topic: Smoothness of `equiv.prod_assoc`
Oliver Nash (Nov 04 2021 at 15:09):
Do we have the fact that the natural map (E × F) × G → E × F × G
is smooth anywhere?
Oliver Nash (Nov 04 2021 at 15:10):
If not, is the following reasonable:
import analysis.calculus.times_cont_diff
variables (𝕜 E F G : Type*) [nondiscrete_normed_field 𝕜]
variables [normed_group E] [normed_space 𝕜 E]
variables [normed_group F] [normed_space 𝕜 F]
variables [normed_group G] [normed_space 𝕜 G]
-- Assumptions here can be relaxed of course
noncomputable def linear_isometry_equiv_prod_assoc : (E × F) × G ≃ₗᵢ[𝕜] E × F × G :=
{ to_fun := equiv.prod_assoc E F G,
inv_fun := (equiv.prod_assoc E F G).symm,
map_add' := by simp,
map_smul' := by simp,
norm_map' :=
begin
rintros ⟨⟨e, f⟩, g⟩,
simp only [linear_equiv.coe_mk, equiv.prod_assoc_apply, prod.norm_def, max_assoc],
end,
.. equiv.prod_assoc E F G, }
@[simp] lemma coe_linear_isometry_equiv_prod_assoc :
(linear_isometry_equiv_prod_assoc 𝕜 E F G : (E × F) × G → E × F × G) = equiv.prod_assoc E F G :=
rfl
lemma times_cont_diff_prod_assoc :
times_cont_diff 𝕜 ⊤ $ equiv.prod_assoc E F G :=
(coe_linear_isometry_equiv_prod_assoc 𝕜 E F G) ▸
(linear_isometry_equiv_prod_assoc 𝕜 E F G).times_cont_diff
Patrick Massot (Nov 04 2021 at 15:14):
It looks good to me, but @Heather Macbeth or @Sebastien Gouezel can probably comment.
Floris van Doorn (Nov 04 2021 at 16:14):
This should be an easy consequence of docs#times_cont_mdiff.prod_mk and docs#times_cont_diff_fst and similar.
However, if you need this property for something that is not specifically about reordering/reassociating arguments, I have serious concerns that you are taking an efficient route here.
Floris van Doorn (Nov 04 2021 at 16:15):
The note
https://leanprover-community.github.io/mathlib_docs/notes.html#continuity%20lemma%20statement
ensures you usually don't have to worry about these issues for continuous
, but it applies equally well to times_cont_diff
.
If you need this to apply some times_cont_diff
lemma to your case, can you use the tips in that library note to generalize said lemma?
Oliver Nash (Nov 04 2021 at 16:18):
Thanks for the remarks!
Floris van Doorn (Nov 04 2021 at 16:18):
Oh, I missed the m
in docs#times_cont_mdiff.prod_mk. We need some analogue times_cont_diff.prod_mk
Oliver Nash (Nov 04 2021 at 16:18):
I am aware of the proof avoiding the linear isometry, I just like my approach since I feel like it's more fundamental but I have no strong feelings.
Oliver Nash (Nov 04 2021 at 16:20):
Regarding the concern that I may be taking an inefficient route, all I want is to know that the evaluation map is smooth where are normed spaces and is the space of continuous affine maps.
Oliver Nash (Nov 04 2021 at 16:20):
I decided to obtain this by factoring this evaluation map as:
Oliver Nash (Nov 04 2021 at 16:20):
where is the space of continuous linear maps, and the final arrow is addition.
Oliver Nash (Nov 04 2021 at 16:21):
Right in the middle you can see where I need smoothness of associativity. I'm open to suggestions!
Oliver Nash (Nov 04 2021 at 16:22):
In any case, I'll study your remarks and thank you for proving them.
Oliver Nash (Nov 04 2021 at 16:24):
Floris van Doorn said:
Oh, I missed the
m
in docs#times_cont_mdiff.prod_mk. We need some analoguetimes_cont_diff.prod_mk
Floris van Doorn (Nov 04 2021 at 16:24):
that's not quite the same.
Floris van Doorn (Nov 04 2021 at 16:24):
compare docs#continuous.prod_mk vs docs#continuous.prod_map
Oliver Nash (Nov 04 2021 at 16:25):
Right, I see.
Floris van Doorn (Nov 04 2021 at 16:27):
I'm think that the library note applies to your situation, but I'm not sure. What is the lemma that
is smooth? The library note probably applies to that lemma.
Oliver Nash (Nov 04 2021 at 16:29):
I'm actually really interested to learn about how this library note applies here so I'm delighted you're interested.
Oliver Nash (Nov 04 2021 at 16:29):
Floris van Doorn said:
I'm think that the library note applies to your situation, but I'm not sure. What is the lemma that
is smooth? The library note probably applies to that lemma.
I don't think this literally exists in the library but it almost does. See here: https://leanprover.zulipchat.com/#narrow/stream/217875-Is-there.20code.20for.20X.3F/topic/Smoothness.20of.20linear.20evaluation.20map/near/259864674
Floris van Doorn (Nov 04 2021 at 16:30):
substitute every occurrence of continuous
in my library note to times_cont_diff
, and the advice is probably still good.
Oliver Nash (Nov 04 2021 at 16:30):
Understood, I note you even say this in the note itself.
Floris van Doorn (Nov 04 2021 at 16:31):
Yeah, that lemma should be formulated something like times_cont_diff f -> times_cont_diff g -> times_cont_diff λ x, (f x) (g x)
where f : X -> (E →L[𝕜] F)
and g : X -> E
Oliver Nash (Nov 04 2021 at 16:32):
Excellent, this is exactly the sort of example I needed to see. I will use this formalisation (and tag you on the relevant PR) in due course.
Floris van Doorn (Nov 04 2021 at 16:33):
From your version of the lemma, the proof of this version should be something like times_cont_diff_continuous_linear_eval.comp $ hf.prod_mk hg
(using the non-existent prod_mk
)
Oliver Nash (Nov 04 2021 at 16:39):
I have to go for a run now so I've proposed an approach here: #10165
Last updated: Dec 20 2023 at 11:08 UTC