-
Notifications
You must be signed in to change notification settings - Fork 1.2k
feat: ContinuousLinearMap.pi as a continuous linear equivalence #37435
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
Open
ADedecker
wants to merge
16
commits into
leanprover-community:master
Choose a base branch
from
ADedecker:AD_CLE_piComm
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
a62bd4a
feat: ContinuousLinearMap.pi as a continuous linear equivalence
ADedecker 52a53cb
Merge remote-tracking branch 'upstream/master' into AD_CLE_piComm
ADedecker b2181cf
++
ADedecker 631ff05
fix
ADedecker fcb922c
feat: notation for `UniformConvergenceCLM`
ADedecker df97b05
Merge branch 'AD_uniformCLM_notation' into AD_CLE_piComm
ADedecker 048af02
useless _root_
ADedecker 6738a4a
use notation
ADedecker d6b7a71
Add version for PointwiseCLM
ADedecker b59948f
add simp lemmas
ADedecker 39a5d62
Compact version
ADedecker b17b3b2
++
ADedecker d6d1029
Merge remote-tracking branch 'upstream/master' into AD_CLE_piComm
ADedecker 1367f6f
Merge remote-tracking branch 'upstream/master' into AD_CLE_piComm
ADedecker 67d38f2
Apply suggestions from code review
ADedecker ebce62a
Merge remote-tracking branch 'upstream/master' into AD_CLE_piComm
ADedecker File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -165,4 +165,29 @@ def equivWeakDual : (E →Lₚₜ[𝕜] 𝕜) ≃L[𝕜] WeakDual 𝕜 E where | |
| WeakDual.continuous_of_continuous_eval (fun y ↦ (evalCLM _ 𝕜 y).continuous) | ||
| continuous_invFun := continuous_of_continuous_eval (WeakBilin.eval_continuous _) | ||
|
|
||
| section Pi | ||
|
|
||
| variable {ι : Type*} (F : ι → Type*) | ||
| [∀ i, AddCommGroup (F i)] [∀ i, Module 𝕜 (F i)] [∀ i, TopologicalSpace (F i)] | ||
| [∀ i, IsTopologicalAddGroup (F i)] [∀ i, ContinuousConstSMul 𝕜 (F i)] | ||
|
|
||
| variable (𝕜 E) in | ||
| /-- `ContinuousLinearMap.pi`, upgraded to a continuous linear equivalence between | ||
| `Π i, E →Lₚₜ[𝕜] F i` and `E →Lₚₜ[𝕜] Π i, F i`. -/ | ||
| def piEquivL : | ||
| (Π i, E →Lₚₜ[𝕜] F i) ≃L[𝕜] (E →Lₚₜ[𝕜] Π i, F i) where | ||
| toFun F := ContinuousLinearMap.pi F | ||
| invFun f i := (ContinuousLinearMap.proj i).comp f | ||
| __ := UniformConvergenceCLM.piEquivL _ _ _ | ||
|
|
||
| @[simp] | ||
| lemma piEquivL_apply (T : Π i, E →Lₚₜ[𝕜] F i) (e : E) (i : ι) : | ||
| piEquivL 𝕜 E F T e i = T i e := rfl | ||
|
|
||
| @[simp] | ||
| lemma piEquivL_symm_apply (T : E →Lₚₜ[𝕜] Π i, F i) (e : E) (i : ι) : | ||
| (piEquivL 𝕜 E F).symm T i e = T e i := rfl | ||
|
Comment on lines
+183
to
+189
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same question about |
||
|
|
||
| end Pi | ||
|
|
||
| end PointwiseConvergenceCLM | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -503,3 +503,48 @@ alias postcomp_uniformConvergenceCLM := postcompUniformConvergenceCLM | |
| alias postcomp_uniformConvergenceCLM_apply := postcompUniformConvergenceCLM_apply | ||
|
|
||
| end ContinuousLinearMap | ||
|
|
||
| section Pi | ||
|
|
||
| open scoped UniformConvergenceCLM | ||
|
|
||
| variable (𝕜 : Type*) [NormedField 𝕜] {E ι : Type*} (F : ι → Type*) | ||
| [AddCommGroup E] [Module 𝕜 E] [TopologicalSpace E] | ||
| [∀ i, AddCommGroup (F i)] [∀ i, Module 𝕜 (F i)] [∀ i, TopologicalSpace (F i)] | ||
| [∀ i, IsTopologicalAddGroup (F i)] [∀ i, ContinuousConstSMul 𝕜 (F i)] | ||
|
|
||
| /-- `ContinuousLinearMap.pi`, upgraded to a continuous linear equivalence between | ||
| `Π i, E →Lᵤ[𝕜, 𝔖] F i` and `E →Lᵤ[𝕜, 𝔖] Π i, F i`. -/ | ||
| def UniformConvergenceCLM.piEquivL (𝔖 : Set (Set E)) : | ||
| (Π i, E →Lᵤ[𝕜, 𝔖] F i) ≃L[𝕜] (E →Lᵤ[𝕜, 𝔖] Π i, F i) := | ||
| letI : ∀ i, UniformSpace (F i) := fun i ↦ IsTopologicalAddGroup.rightUniformSpace (F i) | ||
| haveI : ∀ i, IsUniformAddGroup (F i) := fun i ↦ isUniformAddGroup_of_addCommGroup | ||
| { toFun F := ContinuousLinearMap.pi F | ||
| invFun f i := (ContinuousLinearMap.proj i).comp f | ||
| map_add' _ _ := by ext; rfl | ||
| map_smul' _ _ := by ext; rfl | ||
| left_inv _ := by ext; rfl | ||
| right_inv _ := by ext; rfl | ||
| continuous_toFun := by | ||
| rw [UniformConvergenceCLM.isEmbedding_coeFn _ _ _ |>.continuous_iff] | ||
| rw [UniformOnFun.uniformEquivPiComm _ _ |>.isUniformEmbedding.isEmbedding.continuous_iff] | ||
| refine continuous_pi fun i ↦ ?_ | ||
| exact UniformConvergenceCLM.isEmbedding_coeFn _ _ _ |>.continuous.comp (continuous_apply i) | ||
| continuous_invFun := by | ||
| apply continuous_pi (A := fun i ↦ E →Lᵤ[𝕜, 𝔖] F i) fun i ↦ ?_ | ||
| exact (ContinuousLinearMap.proj i : (Π j, F j) →L[𝕜] F i).postcompUniformConvergenceCLM 𝔖 | ||
| |>.continuous} | ||
|
|
||
| @[simp] | ||
| lemma UniformConvergenceCLM.piEquivL_apply (𝔖 : Set (Set E)) | ||
| (T : Π i, E →Lᵤ[𝕜, 𝔖] F i) (e : E) (i : ι) : | ||
| piEquivL 𝕜 F 𝔖 T e i = T i e := | ||
| rfl | ||
|
|
||
| @[simp] | ||
| lemma UniformConvergenceCLM.piEquivL_symm_apply (𝔖 : Set (Set E)) | ||
| (T : E →Lᵤ[𝕜, 𝔖] Π i, F i) (e : E) (i : ι) : | ||
| (piEquivL 𝕜 F 𝔖).symm T i e = T e i := | ||
| rfl | ||
|
Comment on lines
+538
to
+548
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
|
|
||
| end Pi | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Can
simpsnot generate these for you? If not, why not?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.
The issue is that the
simpsgenerated lemma are eitherapplyversion, which is applied only once and exposes aContinuousLinearMap.pi, thus breaking the API boundary. In particular,simpthen fails to apply ContinuousLinearMap.pi_applyapply_applyversion, which is what we want, but the name is not ideal.In particular, note that
piEquivL_applydoes not state the same thing forCompactConvergenceCLMandContinuousLinearMap.The only proper solution to this, I think, is to strengthen the API boundary and teach
simpabout it. I've had some thoughts about it, but no time to implement them...