Skip to content
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

Closed
wants to merge 2 commits into from

Conversation

urkud
Copy link
Member

@urkud urkud commented Mar 14, 2021

Also add helper lemmas/definitions about multilinear maps.


Open in Gitpod

…F i`

Also add helper lemmas/definitions about multilinear maps.
@urkud urkud added the awaiting-review The author would like community review of the PR label Mar 14, 2021
Copy link
Collaborator

@sgouezel sgouezel left a 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)) _ :=
Copy link
Collaborator

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?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried and failed.

Comment on lines +1720 to +1721
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.
Copy link
Collaborator

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.

Copy link
Member Author

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.

Copy link
Collaborator

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.

Copy link
Member Author

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.

Copy link
Member Author

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 classes/instances that will handle, e.g., M → Π i, E i × F i.

Copy link
Member Author

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).

Copy link
Collaborator

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?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #6681

Copy link
Member Author

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'.

@sgouezel
Copy link
Collaborator

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)(which is our "standard" model forn`-dimensional real manifolds, but currently your lemmas don't apply because the distance in the target is not the same).

bors r+

@github-actions github-actions bot added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Mar 15, 2021
bors bot pushed a commit that referenced this pull request Mar 15, 2021
…F i` (#6674)

Also add helper lemmas/definitions about multilinear maps.
@bors
Copy link

bors bot commented Mar 15, 2021

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(analysis/calculus/times_cont_diff): smoothness of f : E → Π i, F i [Merged by Bors] - feat(analysis/calculus/times_cont_diff): smoothness of f : E → Π i, F i Mar 15, 2021
@bors bors bot closed this Mar 15, 2021
@bors bors bot deleted the tcd-pi branch March 15, 2021 14:25
b-mehta pushed a commit that referenced this pull request Apr 2, 2021
…F i` (#6674)

Also add helper lemmas/definitions about multilinear maps.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants