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/calculus/times_cont_diff): smoothness of f : E → Π i, F i
#6674
Conversation
…F i` Also add helper lemmas/definitions about multilinear maps.
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.
All the times_cont_diff
code is perfect, and can be merged right away. However, I am not convinced by the times_cont_mdiff
part since you are not dealing with functions taking values in product manifolds. Do you think it is worth going directly for the right generality, or that in any case we will need to duplicate the API since there is no way to handle all situations simultaneously?
[Π i', normed_space 𝕜 (E' i')] : | ||
@linear_isometry_equiv 𝕜 (Π i', continuous_multilinear_map 𝕜 E (E' i')) | ||
(continuous_multilinear_map 𝕜 E (Π i, E' i)) _ _ _ | ||
(@pi.semimodule ι' _ 𝕜 _ _ (λ i', infer_instance)) _ := |
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.
Is there really no way to have Lean find this instance by itself?
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 tried and failed.
We have no `model_with_corners.pi` yet, so we prove lemmas about functions `f : M → Π i, F i` and | ||
use `𝓘(𝕜, Π i, F i)` as the model space. |
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 am not sure about this: I understand that this is precisely what you need for your Whitney-like embedding theorem (with functions taking values in a product space), but I feel doing directly in the right generality can avoid a lot of code duplication later 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.
In a not-yet-PRd part of the branch I duplicate the lemmas about manifold product for the case of E × F
with the identity model. I see no reasonable way to avoid duplication of API. Of course, I can define the identity diffeomorphism between E × F
or Π i, E i
with two models, but this won't give us a nice dot notation.
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 don't mean between two and many. I mean that, for many, you have the situation of model with corners I' i : H i -> E i
, and then you want to consider model_with_corners.pi I'
and use this one to formulate pi lemmas.
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 will add lemmas about model_pi
in another PR but they won't give me lemmas about 𝓘(𝕜, Π i, F i)
for free. Same with model_prod
: I had to add lemmas like smooth.prod_space
to deal with 𝓘(𝕜, E × F)
(I'll PR these lemmas later today). Possibly we can add typeclasses [is_prod_model]
and [is_pi_model]
that verify that a model on M × N
is actually equal to IE.prod IF
, then formulate theorems about prod
for these lemmas, and similarly for pi
.
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.
But I can't come up (yet?) with class
es/instance
s that will handle, e.g., M → Π i, E i × F i
.
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.
Probably it's better to add [is_trivial_model I]
with instances for the trivial model, model_prod
, and model_pi
. Then we can have times_cont_mdiff_at.to_trivial_right
etc. But this doesn't give us lemmas like times_cont_mdiff_at_pi_space
for free (I mean, without stating them).
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 like the idea of is_prod_model
and is_pi_model
. I don't understand the is_trivial_model
idea, though: one can take products of non-trivial models, and I'd still like the theorems on smoothness into products to apply in this situation. Do you prefer that we merge this now and postpone the improvement to a later PR, or would you agree to adapt the current PR to cover already the more general situation?
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.
See #6681
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.
What should be the definition/instances of is_prod_model
/is_pi_model
so that they cover cases like Π i, E i × F i
? As for is_trivial_model
I meant something like is_trivial_model (I : smooth_model_with_corners k E H) [charted_space E H] := (is_trivial_model : I = 𝓘(...)) (is_trivial_charted : ...)
. Then we can have to_model_self_left
/to_model_self_right
/of_model_self_left
/of_model_self_right
operations on smooth
etc.
P.S.: I would prefer to have this and #6681 merged before we agree on the correct design of model_prod H H' <-> H × H'
.
ok. Let's merge this and refactor later if/when needed. A difficulty I see is that you also want these statements for euclidean_space ℝ (fin n) bors r+ |
…F i` (#6674) Also add helper lemmas/definitions about multilinear maps.
Pull request successfully merged into master. Build succeeded: |
f : E → Π i, F i
f : E → Π i, F i
…F i` (#6674) Also add helper lemmas/definitions about multilinear maps.
Also add helper lemmas/definitions about multilinear maps.