Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
229 commits
Select commit Hold shift + click to select a range
04beefc
linting, file doc-string, basic defs for ContDiffMapSupp
luigi-massacci Sep 30, 2025
d546fc6
added module code
luigi-massacci Sep 30, 2025
831adee
Misc API lemmas
luigi-massacci Sep 30, 2025
a273e6b
Added FDeriv'
luigi-massacci Sep 30, 2025
1f09202
Added topology
luigi-massacci Sep 30, 2025
24caea9
added seminorms
luigi-massacci Sep 30, 2025
f29c321
misc continuity lemmas
luigi-massacci Sep 30, 2025
12a59a2
added fderiv
luigi-massacci Sep 30, 2025
3bc2259
fixed copy-paste error in class docstring
luigi-massacci Oct 1, 2025
c53fcf9
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 1, 2025
52d1dd0
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 1, 2025
4c0090d
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_IV_FDeriv1
luigi-massacci Oct 1, 2025
bb595c3
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 1, 2025
a2edac5
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_VI_seminorms
luigi-massacci Oct 1, 2025
49f8dd9
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_VII_cont_lemmas
luigi-massacci Oct 1, 2025
721301a
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_VIII_fderiv
luigi-massacci Oct 1, 2025
6f915f1
Merge branch 'leanprover-community:master' into LM_PR_ContDiff_I
luigi-massacci Oct 4, 2025
64effd6
add Anatole Dedecker as coauthor
ADedecker Oct 4, 2025
00f9433
linting
luigi-massacci Oct 4, 2025
31fdac5
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 4, 2025
e7ba854
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 4, 2025
5c475d7
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 4, 2025
db2aaf2
Added def to module docstring
luigi-massacci Oct 4, 2025
54aae81
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 4, 2025
e42cf81
Added statements to module docstring
luigi-massacci Oct 4, 2025
5526fc4
formatting
luigi-massacci Oct 4, 2025
f950abf
Formatting, docstring fixes
luigi-massacci Oct 5, 2025
71d3362
more docstring fixes
luigi-massacci Oct 5, 2025
6106ad3
docstring
luigi-massacci Oct 5, 2025
c93ca76
dosctring fixes suggested by @grunweg
luigi-massacci Oct 5, 2025
76a1c5f
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 5, 2025
b3eeaef
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 5, 2025
2bb9184
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 5, 2025
a031f73
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 5, 2025
3ccdd71
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 5, 2025
2891b18
Added more detailed explanation of topology in docstring
luigi-massacci Oct 5, 2025
2b1d193
docstring explanation of toplogy suggeste by @ADedecker
luigi-massacci Oct 5, 2025
3c31a23
docstring suggestions by @grunweg and @ADedecker
luigi-massacci Oct 5, 2025
030003e
More module docstring fixes
luigi-massacci Oct 5, 2025
1859401
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 5, 2025
3425e86
review fixes suggested by @ADedecker
luigi-massacci Oct 5, 2025
12bc2f5
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 5, 2025
b337745
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 5, 2025
e22ec1a
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 5, 2025
873c9ed
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 5, 2025
3b28781
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 5, 2025
605a5f9
Formatting
luigi-massacci Oct 5, 2025
518f1f4
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 5, 2025
b43abe0
docsting fix suggested by @ADedecker
luigi-massacci Oct 5, 2025
9502f08
moved misc API lemmas from #302198
luigi-massacci Oct 5, 2025
c4cb690
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 5, 2025
2bf33d4
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 5, 2025
03cc3fd
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 5, 2025
81b746b
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 5, 2025
cec3baf
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 5, 2025
9e4aa90
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 5, 2025
6cbaf18
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 5, 2025
e7adede
Moved ENat lemma
luigi-massacci Oct 5, 2025
ba3484a
Moved ENat lemma 2
luigi-massacci Oct 5, 2025
012fee9
Merge branch 'master' into LM_PR_ContDiff_I
luigi-massacci Oct 6, 2025
b3db3fb
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 6, 2025
b835f6f
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 6, 2025
79d59d5
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 6, 2025
726dcae
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 6, 2025
b339934
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 6, 2025
30b8102
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 6, 2025
136c0cc
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 6, 2025
a8708eb
Renaming iteratedFDeriv on D_K^n for n finiteù
luigi-massacci Oct 6, 2025
2d26104
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 6, 2025
0dce180
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 6, 2025
5d1b0ba
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 6, 2025
85e8937
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 6, 2025
e908eb9
fixes due to previous renaming
luigi-massacci Oct 6, 2025
ef3effd
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 6, 2025
7096e7c
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 6, 2025
dc58ae7
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 6, 2025
bbcc9a9
fixes due to previous renaming
luigi-massacci Oct 6, 2025
c724dd0
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 6, 2025
f390e50
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 6, 2025
679645b
Analogous renaming for fderiv
luigi-massacci Oct 6, 2025
88862ba
linting
luigi-massacci Oct 6, 2025
d32a182
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 6, 2025
2122b72
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 6, 2025
1dbd115
english grammar
luigi-massacci Oct 9, 2025
2ba5759
misx review fixes
luigi-massacci Oct 9, 2025
1e022db
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 9, 2025
5730a77
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 9, 2025
edc893f
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 9, 2025
167ed55
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 9, 2025
9c11ae8
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 9, 2025
bd8d27e
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 9, 2025
ec86f8c
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 9, 2025
5c05acc
Apply suggestions from code review
grunweg Oct 9, 2025
e7271d9
Merge branch 'LM_PR_ContDiff_I' into LM_PR_ContDiff_module
luigi-massacci Oct 13, 2025
8d35125
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 13, 2025
72e1f79
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 13, 2025
734eeb1
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 13, 2025
2cd1934
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 13, 2025
b2526b3
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 13, 2025
b3a15bf
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 13, 2025
e68dbb2
Merge branch 'master' into LM_PR_ContDiff_module
luigi-massacci Oct 13, 2025
de5539e
Merge branch 'LM_PR_ContDiff_module' into LM_PR_ContDiff_III_misc_lemmas
luigi-massacci Oct 13, 2025
16835ca
Merge branch 'LM_PR_ContDiff_III_misc_lemmas' into LM_PR_ContDiff_IV_…
luigi-massacci Oct 13, 2025
9715b25
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
luigi-massacci Oct 13, 2025
bdfa92c
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
luigi-massacci Oct 13, 2025
8f83c16
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
luigi-massacci Oct 13, 2025
188166a
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
luigi-massacci Oct 13, 2025
ea8c562
Merge remote-tracking branch 'upstream/master' into LM_PR_ContDiff_IV…
ADedecker Nov 7, 2025
f2eff21
Fix
ADedecker Nov 7, 2025
534a7cc
Apply suggestions from code review
ADedecker Nov 7, 2025
0484328
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 7, 2025
bf6c522
Avoid DTT hell *and* substraction
ADedecker Nov 7, 2025
f037cfa
Avoid DTT hell *and* subtraction
ADedecker Nov 8, 2025
cff60de
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 8, 2025
b25bb27
Documentation + smooth version
ADedecker Nov 8, 2025
032db8f
More doc
ADedecker Nov 8, 2025
1fb52dc
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 8, 2025
87ec006
structureMapL -> structureMap
ADedecker Nov 8, 2025
1ab795f
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 8, 2025
00e6f4b
Start fix
ADedecker Nov 10, 2025
427486c
coe -> apply because LinearMap
ADedecker Nov 10, 2025
aa04171
Add a bit more API
ADedecker Nov 10, 2025
babf4e6
Cherry pick and localize to open subset
ADedecker Nov 10, 2025
14590e0
Fixes
ADedecker Nov 10, 2025
f65384b
mk_all
ADedecker Nov 10, 2025
1990ab3
Namespace to avoid conflict
ADedecker Nov 10, 2025
5437d81
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 10, 2025
f918025
Undo
ADedecker Nov 10, 2025
cec88ae
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 10, 2025
6179a9d
cleanup
ADedecker Nov 10, 2025
9366e61
Switch to LM and anticipate CLM variants
ADedecker Nov 11, 2025
b706cd9
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 11, 2025
b0d2a70
API for `structureMapCLM` and `continuous_iff_comp_withOrder`
ADedecker Nov 11, 2025
ce9e25c
fix
ADedecker Nov 11, 2025
c6cf529
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 11, 2025
e032c5a
fixes
ADedecker Nov 11, 2025
03f9e1f
Better API
ADedecker Nov 11, 2025
a1f42d3
fix
ADedecker Nov 11, 2025
f7bbde1
Fix documentation
ADedecker Nov 11, 2025
1ece442
Merge branch 'LM_PR_ContDiff_IV_FDeriv1' into LM_PR_ContDiff_V_topology
ADedecker Nov 11, 2025
71124fb
++
ADedecker Nov 11, 2025
bf8b096
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 11, 2025
29d60f9
Start
ADedecker Nov 11, 2025
5ae99b7
simps apply -> coe
ADedecker Nov 11, 2025
1ea96fa
Merge branch 'AD_LM_testFunctions_shortcut' into AD_LM_testFunctions_…
ADedecker Nov 11, 2025
e38e4c6
More tsupport API
ADedecker Nov 12, 2025
fc29422
feat: more API on tsupport and operations on functions
ADedecker Nov 12, 2025
833c973
Merge branch 'AD_tsupport_API' into AD_LM_testFunctions_module_shortcut
ADedecker Nov 12, 2025
11b6a72
Fix
ADedecker Nov 12, 2025
7154b7d
Preemptive fix
ADedecker Nov 12, 2025
5050bde
Merge branch 'AD_tsupport_API' into AD_LM_testFunctions_module_shortcut
ADedecker Nov 12, 2025
6f4ef17
Fix
ADedecker Nov 12, 2025
bf93204
Merge branch 'AD_tsupport_API' into AD_LM_testFunctions_module_shortcut
ADedecker Nov 12, 2025
7274d51
Merge remote-tracking branch 'upstream/master' into LM_PR_ContDiff_V_…
ADedecker Nov 14, 2025
bf117c5
Fixes
ADedecker Nov 14, 2025
5fd3a9a
weird
ADedecker Nov 14, 2025
a89e8d2
wording
ADedecker Nov 14, 2025
f252e38
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 14, 2025
7042ef6
Something fishy
ADedecker Nov 14, 2025
48247e8
Apply suggestions from code review
ADedecker Nov 14, 2025
be9bbe3
Suggestions from review
ADedecker Nov 14, 2025
b5f9f14
Suggestions from review
ADedecker Nov 14, 2025
7977efd
Docstring fixes
ADedecker Nov 14, 2025
8f33816
Merge branch 'AD_LM_testFunctions_shortcut' into AD_LM_testFunctions_…
ADedecker Nov 14, 2025
2139709
Finish
ADedecker Nov 14, 2025
2a6a4d6
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 14, 2025
47faae9
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 14, 2025
9497952
Merge branch 'LM_PR_ContDiff_V_topology' into LM_PR_ContDiff_VI_semin…
ADedecker Nov 18, 2025
2e629cc
Merge remote-tracking branch 'upstream/master' into LM_PR_ContDiff_VI…
ADedecker Nov 18, 2025
2f7ee5f
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 18, 2025
a3d794e
Suggestions + extra lemma
ADedecker Nov 18, 2025
9a2384a
Merge remote-tracking branch 'upstream/master' into AD_LM_testFunctio…
ADedecker Nov 18, 2025
4442225
postcomp
ADedecker Nov 18, 2025
5a5bd7e
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 18, 2025
d74f5d9
Good progress
ADedecker Nov 18, 2025
62efcdd
Merge remote-tracking branch 'upstream/master' into AD_LM_testFunctio…
ADedecker Nov 18, 2025
44cc5e4
Update Mathlib/Analysis/Distribution/TestFunction.lean
ADedecker Nov 18, 2025
8788120
Notation and extra lemmas
ADedecker Nov 18, 2025
66ac859
Use structureMapCLM. Readability?
ADedecker Nov 18, 2025
5ef4a91
Tweak names
ADedecker Nov 18, 2025
3112bc2
Merge remote-tracking branch 'upstream/master' into AD_LM_testFunctio…
ADedecker Nov 19, 2025
db9ad5f
Merge remote-tracking branch 'upstream/master' into LM_PR_ContDiff_VI…
ADedecker Nov 19, 2025
cb45825
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 19, 2025
73dcf60
remove duplicate
ADedecker Nov 19, 2025
aabfc33
add simp lemma
ADedecker Nov 19, 2025
569e2a0
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 19, 2025
9d63aeb
Update Mathlib/Data/ENat/Basic.lean
ADedecker Nov 19, 2025
9a35add
Adapt to new API and conventions
ADedecker Nov 19, 2025
ab865d1
Docstrings
ADedecker Nov 19, 2025
844e6b8
remove extra lemma in simp call
ADedecker Nov 19, 2025
2f45ddc
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 19, 2025
e7664d2
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 19, 2025
1c47b01
now in mathlib
ADedecker Nov 19, 2025
7fea564
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 19, 2025
7efdea6
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 19, 2025
603d3b8
Slight golf
ADedecker Nov 19, 2025
893db10
feat: endow test functions with the canonical LF topology
ADedecker Nov 19, 2025
c1cf50b
Clean
ADedecker Nov 19, 2025
5af3515
Doc + anticipate
ADedecker Nov 19, 2025
aaf7c16
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 19, 2025
e9ee673
Apply suggestions from code review
ADedecker Nov 19, 2025
f8791f2
..
ADedecker Nov 19, 2025
c8d9e00
variable names
ADedecker Nov 19, 2025
443f9d0
Merge branch 'AD_LM_testFunctions_topology_shortcut' into AD_testFunc…
ADedecker Nov 19, 2025
f1481c8
feat: differentiation of test function as a CLM
ADedecker Nov 19, 2025
d042e93
Merge remote-tracking branch 'upstream/master' into AD_LM_testFunctio…
ADedecker Nov 20, 2025
2276bd7
Merge branch 'AD_LM_testFunctions_topology_shortcut' into AD_testFunc…
ADedecker Nov 20, 2025
900518a
Docstrings
ADedecker Nov 22, 2025
a7edb4b
Fix docstring
ADedecker Nov 22, 2025
2169bcf
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 22, 2025
e5cf98b
Remove lint
ADedecker Nov 22, 2025
2a6388f
Suggestions from review
ADedecker Nov 26, 2025
a741760
Switch to ∘ₗ
ADedecker Nov 26, 2025
8111e09
Suggestions from review
ADedecker Nov 26, 2025
0d4a669
doc
ADedecker Nov 26, 2025
af2ad1b
Merge branch 'LM_PR_ContDiff_VI_seminorms' into LM_PR_ContDiff_VII_co…
ADedecker Nov 26, 2025
6a72ba9
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 26, 2025
be2a915
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 26, 2025
a0456f8
Merge branch 'AD_LM_testFunctions_topology_shortcut' into AD_testFunc…
ADedecker Nov 26, 2025
ea9dc7e
Unused argument
ADedecker Nov 26, 2025
aa2e350
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 26, 2025
bc78e8b
Fixes
ADedecker Nov 26, 2025
d7bbfce
Merge remote-tracking branch 'upstream/master' into LM_PR_ContDiff_VI…
ADedecker Nov 27, 2025
22ecd13
Fix
ADedecker Nov 27, 2025
0ea2c7c
Merge branch 'LM_PR_ContDiff_VII_cont_lemmas' into LM_PR_ContDiff_VII…
ADedecker Nov 28, 2025
5ecdb53
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 28, 2025
9c195bc
Fix
ADedecker Nov 28, 2025
5c65b5d
Merge branch 'LM_PR_ContDiff_VIII_fderiv' into AD_testFunctions_fderiv
ADedecker Nov 28, 2025
b5f01b0
Merge remote-tracking branch 'upstream/master' into AD_testFunctions_…
ADedecker Nov 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 222 additions & 3 deletions Mathlib/Analysis/Distribution/ContDiffMapSupportedIn.lean
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ distributions
open TopologicalSpace SeminormFamily Set Function Seminorm UniformSpace
open scoped BoundedContinuousFunction Topology NNReal ContDiff

variable (𝕜 E F : Type*) [NontriviallyNormedField 𝕜]
variable (𝕜 E F F' : Type*) [NontriviallyNormedField 𝕜]
[NormedAddCommGroup E] [NormedSpace ℝ E]
[NormedAddCommGroup F] [NormedSpace ℝ F] [NormedSpace 𝕜 F] [SMulCommClass ℝ 𝕜 F]
[NormedAddCommGroup F'] [NormedSpace ℝ F'] [NormedSpace 𝕜 F'] [SMulCommClass ℝ 𝕜 F']
{n k : ℕ∞} {K : Compacts E}

/-- The type of bundled `n`-times continuously differentiable maps which vanish outside of a fixed
Expand Down Expand Up @@ -148,7 +149,7 @@ instance toContDiffMapSupportedInClass :
map_contDiff f := f.contDiff'
map_zero_on_compl f := f.zero_on_compl'

variable {E F}
variable {E F F'}

protected theorem contDiff (f : 𝓓^{n}_{K}(E, F)) : ContDiff ℝ n f := map_contDiff f
protected theorem zero_on_compl (f : 𝓓^{n}_{K}(E, F)) : EqOn f 0 Kᶜ := map_zero_on_compl f
Expand Down Expand Up @@ -297,6 +298,114 @@ lemma toBoundedContinuousFunctionLM_eq_of_scalars (𝕜' : Type*) [NontriviallyN
(toBoundedContinuousFunctionLM 𝕜 : 𝓓^{n}_{K}(E, F) → _) = toBoundedContinuousFunctionLM 𝕜' :=
rfl

variable {𝕜} in
-- Note: generalizing this to a semilinear setting would require a semilinear version of
-- `CompatibleSMul`.
/-- Given `T : F →L[𝕜] F'`, `postcompLM T` is the `𝕜`-linear-map sending `f : 𝓓^{n}_{K}(E, F)`
to `T ∘ f` as an element of `𝓓^{n}_{K}(E, F')`.

This is subsumed by `postcompCLM T`, which also bundles the continuity. -/
noncomputable def postcompLM [LinearMap.CompatibleSMul F F' ℝ 𝕜] (T : F →L[𝕜] F') :
𝓓^{n}_{K}(E, F) →ₗ[𝕜] 𝓓^{n}_{K}(E, F') where
toFun f := ⟨T ∘ f, T.restrictScalars ℝ |>.contDiff.comp f.contDiff,
fun x hx ↦ by simp [f.zero_on_compl hx]⟩
map_add' f g := by ext x; exact map_add T (f x) (g x)
map_smul' c f := by ext x; exact map_smul T c (f x)

@[simp]
lemma postcompLM_apply [LinearMap.CompatibleSMul F F' ℝ 𝕜] (T : F →L[𝕜] F')
(f : 𝓓^{n}_{K}(E, F)) :
postcompLM T f = T ∘ f :=
rfl

variable (n k) in
/-- `fderivWithOrderLM 𝕜 n k` is the `𝕜`-linear-map sending `f : 𝓓^{n}_{K}(E, F)` to
its derivative as an element of `𝓓^{k}_{K}(E, E →L[ℝ] F)`.
This only makes mathematical sense if `k + 1 ≤ n`, otherwise we define it as the zero map.

See `fderivLM` for the very common case where everything is infinitely differentiable.

This is subsumed by `fderivWithOrderCLM`, which also bundles the continuity. -/
noncomputable def fderivWithOrderLM :
𝓓^{n}_{K}(E, F) →ₗ[𝕜] 𝓓^{k}_{K}(E, E →L[ℝ] F) where
toFun f :=
if hk : k + 1 ≤ n then
.of_support_subset
(f.contDiff.fderiv_right <| mod_cast hk)
((support_fderiv_subset ℝ).trans f.tsupport_subset)
else 0
map_add' f g := by
split_ifs with hk
· have hk' : 1 ≤ (n : WithTop ℕ∞) := mod_cast (le_of_add_le_right hk)
ext
simp [fderiv_add (f.contDiff.differentiable hk').differentiableAt
(g.contDiff.differentiable hk').differentiableAt]
· simp
map_smul' c f := by
split_ifs with hk
· have hk' : 1 ≤ (n : WithTop ℕ∞) := mod_cast (le_of_add_le_right hk)
ext
simp [fderiv_const_smul (f.contDiff.differentiable hk').differentiableAt]
· simp

@[simp]
lemma fderivWithOrderLM_apply (f : 𝓓^{n}_{K}(E, F)) :
fderivWithOrderLM 𝕜 n k f = if k + 1 ≤ n then fderiv ℝ f else 0 := by
rw [fderivWithOrderLM]
split_ifs <;> rfl

lemma fderivWithOrderLM_apply_of_le (f : 𝓓^{n}_{K}(E, F)) (hk : k + 1 ≤ n) :
fderivWithOrderLM 𝕜 n k f = fderiv ℝ f := by
simp [hk]

lemma fderivWithOrderLM_apply_of_gt (f : 𝓓^{n}_{K}(E, F)) (hk : ¬ (k + 1 ≤ n)) :
fderivWithOrderLM 𝕜 n k f = 0 := by
ext : 1
simp [hk]

lemma fderivWithOrderLM_eq_of_scalars (𝕜' : Type*) [NontriviallyNormedField 𝕜']
[NormedSpace 𝕜' F] [SMulCommClass ℝ 𝕜' F] :
(fderivWithOrderLM 𝕜 n k : 𝓓^{n}_{K}(E, F) → _) = fderivWithOrderLM 𝕜' n k :=
rfl

/-- `fderivLM 𝕜` is the `𝕜`-linear-map sending `f : 𝓓_{K}(E, F)` to
its derivative as an element of `𝓓_{K}(E, E →L[ℝ] F)`.

See also `fderivWithOrderLM` if you need more control on the regularities.

This is subsumed by `fderivCLM`, which also bundles the continuity. -/
noncomputable def fderivLM :
𝓓_{K}(E, F) →ₗ[𝕜] 𝓓_{K}(E, E →L[ℝ] F) where
toFun f := .of_support_subset
(f.contDiff.fderiv_right le_rfl)
((support_fderiv_subset ℝ).trans f.tsupport_subset)
map_add' f g := by
have h : 1 ≤ ∞ := mod_cast le_top
ext
simp [fderiv_add (f.contDiff.differentiable h).differentiableAt
(g.contDiff.differentiable h).differentiableAt]
map_smul' c f := by
have h : 1 ≤ ∞ := mod_cast le_top
ext
simp [fderiv_const_smul (f.contDiff.differentiable h).differentiableAt]

@[simp]
lemma fderivLM_apply (f : 𝓓_{K}(E, F)) :
fderivLM 𝕜 f = fderiv ℝ f :=
rfl

/-- Note: this turns out to be a definitional equality thanks to decidablity of the order
on `ℕ∞`. This means we could have *defined* `fderivLM` this way, but we avoid it
to make sure that `if`s won't appear in the smooth case. -/
lemma fderivLM_eq_withOrder :
(fderivLM 𝕜 : 𝓓_{K}(E, F) →ₗ[𝕜] _) = fderivWithOrderLM 𝕜 ⊤ ⊤ :=
rfl

lemma fderivLM_eq_of_scalars (𝕜' : Type*) [NontriviallyNormedField 𝕜']
[NormedSpace 𝕜' F] [SMulCommClass ℝ 𝕜' F] :
(fderivLM 𝕜 : 𝓓_{K}(E, F) → _) = fderivLM 𝕜' :=
rfl

variable (n k) in
/-- `iteratedFDerivWithOrderLM 𝕜 n k i` is the `𝕜`-linear-map sending `f : 𝓓^{n}_{K}(E, F)` to
its `i`-th iterated derivative as an element of `𝓓^{k}_{K}(E, E [×i]→L[ℝ] F)`.
Expand Down Expand Up @@ -603,7 +712,7 @@ theorem norm_toBoundedContinuousFunction (f : 𝓓^{n}_{K}(E, F)) :
simp [BoundedContinuousFunction.norm_eq_iSup_norm,
ContDiffMapSupportedIn.seminorm_apply, structureMapCLM_apply_withOrder]

/-- The inclusion of the space `𝓓^{n}_{K}(E, F)` into the space `E →ᵇ F` of bounded continuous
/-- The inclusion of the space `𝓓^{n}_{K}(E, F)` into the space `E →ᵇ F` of bounded continuous
functions as a continuous `𝕜`-linear map. -/
noncomputable def toBoundedContinuousFunctionCLM : 𝓓^{n}_{K}(E, F) →L[𝕜] E →ᵇ F where
toLinearMap := toBoundedContinuousFunctionLM 𝕜
Expand All @@ -629,6 +738,116 @@ instance : T3Space 𝓓^{n}_{K}(E, F) :=
(toBoundedContinuousFunctionCLM ℝ).continuous
inferInstance

theorem seminorm_postcompLM_le [LinearMap.CompatibleSMul F F' ℝ 𝕜] {i : ℕ} (T : F →L[𝕜] F')
(f : 𝓓^{n}_{K}(E, F)) :
N[𝕜]_{K, n, i} (postcompLM T f) ≤ ‖T‖ * N[𝕜]_{K, n, i} f := by
set T' := T.restrictScalars ℝ
change N[ℝ]_{K, n, i} (postcompLM T' f) ≤ ‖T'‖ * N[ℝ]_{K, n, i} f
rw [ContDiffMapSupportedIn.seminorm_le_iff_withOrder ℝ (by positivity)]
intro hi x hx
rw [postcompLM_apply]
calc
‖iteratedFDeriv ℝ i (T' ∘ f) x‖
_ = ‖T'.compContinuousMultilinearMap (iteratedFDeriv ℝ i f x)‖ := by
rw [T'.iteratedFDeriv_comp_left f.contDiff.contDiffAt (mod_cast hi)]
_ ≤ ‖T'‖ * ‖iteratedFDeriv ℝ i f x‖ := T'.norm_compContinuousMultilinearMap_le _
_ ≤ ‖T'‖ * N[ℝ]_{K, n, i} f := by grw [norm_iteratedFDeriv_apply_le_seminorm_withOrder ℝ hi]

variable {𝕜} in
-- Note: generalizing this to a semilinear setting would require a semilinear version of
-- `CompatibleSMul`.
/-- Given `T : F →L[𝕜] F'`, `postcompCLM T` is the continuous `𝕜`-linear-map sending
`f : 𝓓^{n}_{K}(E, F)` to `T ∘ f` as an element of `𝓓^{n}_{K}(E, F')`. -/
noncomputable def postcompCLM [LinearMap.CompatibleSMul F F' ℝ 𝕜] (T : F →L[𝕜] F') :
𝓓^{n}_{K}(E, F) →L[𝕜] 𝓓^{n}_{K}(E, F') where
toLinearMap := postcompLM T
cont := show Continuous (postcompLM T) by
refine continuous_from_bounded (ContDiffMapSupportedIn.withSeminorms _ _ _ _ _)
(ContDiffMapSupportedIn.withSeminorms _ _ _ _ _) _ (fun i ↦ ⟨{i}, ‖T‖₊, fun f ↦ ?_⟩)
simpa [NNReal.smul_def] using seminorm_postcompLM_le 𝕜 T f

@[simp]
lemma postcompCLM_apply [LinearMap.CompatibleSMul F F' ℝ 𝕜] (T : F →L[𝕜] F')
(f : 𝓓^{n}_{K}(E, F)) :
postcompCLM T f = T ∘ f :=
rfl

theorem seminorm_fderivWithOrderLM_le {i : ℕ} (f : 𝓓^{n}_{K}(E, F)) :
N[𝕜]_{K, k, i} (fderivWithOrderLM 𝕜 n k f) ≤ N[𝕜]_{K, n, i+1} f := by
by_cases hk : k + 1 ≤ n
· rw [ContDiffMapSupportedIn.seminorm_le_iff_withOrder 𝕜 (apply_nonneg _ _)]
intro hi x hx
have hi' : i + 1 ≤ n := (add_le_add_left hi 1).trans hk
simpa [hk, norm_iteratedFDeriv_fderiv] using
norm_iteratedFDeriv_apply_le_seminorm_withOrder 𝕜 hi'
· simp [fderivWithOrderLM_apply_of_gt 𝕜 f hk]

variable (n k) in
/-- `fderivWithOrderCLM 𝕜 n k` is the continuous `𝕜`-linear-map sending `f : 𝓓^{n}_{K}(E, F)` to
its derivative as an element of `𝓓^{k}_{K}(E, E →L[ℝ] F)`.
This only makes mathematical sense if `k + 1 ≤ n`, otherwise we define it as the zero map.

See `fderivCLM` for the very common case where everything is infinitely differentiable. -/
noncomputable def fderivWithOrderCLM :
𝓓^{n}_{K}(E, F) →L[𝕜] 𝓓^{k}_{K}(E, E →L[ℝ] F) where
toLinearMap := fderivWithOrderLM 𝕜 n k
cont := show Continuous (fderivWithOrderLM 𝕜 n k) by
refine continuous_from_bounded (ContDiffMapSupportedIn.withSeminorms _ _ _ _ _)
(ContDiffMapSupportedIn.withSeminorms _ _ _ _ _) _ (fun i ↦ ⟨{i+1}, 1, fun f ↦ ?_⟩)
simpa using seminorm_fderivWithOrderLM_le 𝕜 f

@[simp]
lemma fderivWithOrderCLM_apply (f : 𝓓^{n}_{K}(E, F)) :
fderivWithOrderCLM 𝕜 n k f = if k + 1 ≤ n then fderiv ℝ f else 0 :=
fderivWithOrderLM_apply 𝕜 f

lemma fderivWithOrderCLM_apply_of_le (f : 𝓓^{n}_{K}(E, F)) (hk : k + 1 ≤ n) :
fderivWithOrderCLM 𝕜 n k f = fderiv ℝ f :=
fderivWithOrderLM_apply_of_le 𝕜 f hk

lemma fderivWithOrderCLM_apply_of_gt (f : 𝓓^{n}_{K}(E, F)) (hk : ¬ (k + 1 ≤ n)) :
fderivWithOrderCLM 𝕜 n k f = 0 :=
fderivWithOrderLM_apply_of_gt 𝕜 f hk

lemma fderivWithOrderCLM_eq_of_scalars (𝕜' : Type*) [NontriviallyNormedField 𝕜']
[NormedSpace 𝕜' F] [SMulCommClass ℝ 𝕜' F] :
(fderivWithOrderCLM 𝕜 n k : 𝓓^{n}_{K}(E, F) → _) = fderivWithOrderCLM 𝕜' n k :=
rfl

theorem seminorm_fderivLM {i : ℕ} (f : 𝓓_{K}(E, F)) :
N[𝕜]_{K, i} (fderivLM 𝕜 f) = N[𝕜]_{K, i+1} f := by
simp [ContDiffMapSupportedIn.seminorm_apply, BoundedContinuousFunction.norm_eq_iSup_norm,
norm_iteratedFDeriv_fderiv]

/-- `fderivCLM 𝕜` is the continuous `𝕜`-linear-map sending `f : 𝓓_{K}(E, F)` to
its derivative as an element of `𝓓_{K}(E, E →L[ℝ] F)`.

See also `fderivWithOrderCLM` if you need more control on the regularities. -/
noncomputable def fderivCLM :
𝓓_{K}(E, F) →L[𝕜] 𝓓_{K}(E, E →L[ℝ] F) where
toLinearMap := fderivLM 𝕜
cont := show Continuous (fderivLM 𝕜) by
refine continuous_from_bounded (ContDiffMapSupportedIn.withSeminorms _ _ _ _ _)
(ContDiffMapSupportedIn.withSeminorms _ _ _ _ _) _ (fun i ↦ ⟨{i+1}, 1, fun f ↦ ?_⟩)
simp [seminorm_fderivLM 𝕜 f]

@[simp]
lemma fderivCLM_apply (f : 𝓓_{K}(E, F)) :
fderivCLM 𝕜 f = fderiv ℝ f :=
rfl

/-- Note: this turns out to be a definitional equality thanks to decidablity of the order
on `ℕ∞`. This means we could have *defined* `fderivLM` this way, but we avoid it
to make sure that `if`s won't appear in the smooth case. -/
lemma fderivCLM_eq_withOrder :
(fderivCLM 𝕜 : 𝓓_{K}(E, F) →L[𝕜] _) = fderivWithOrderCLM 𝕜 ⊤ ⊤ :=
rfl

lemma fderivCLM_eq_of_scalars (𝕜' : Type*) [NontriviallyNormedField 𝕜']
[NormedSpace 𝕜' F] [SMulCommClass ℝ 𝕜' F] :
(fderivCLM 𝕜 : 𝓓_{K}(E, F) → _) = fderivCLM 𝕜' :=
rfl

end Topology

end ContDiffMapSupportedIn
Loading