Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 88fb7ca

Browse files
urkudsgouezel
andcommitted
chore(analysis/calculus): move the definition of formal_multilinear_series to a new file (#5348)
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent 36eec1a commit 88fb7ca

File tree

2 files changed

+96
-60
lines changed

2 files changed

+96
-60
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/-
2+
Copyright (c) 2019 Sébastien Gouëzel. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Author: Sébastien Gouëzel
5+
-/
6+
import analysis.normed_space.multilinear
7+
import ring_theory.power_series
8+
9+
/-!
10+
# Formal multilinear series
11+
12+
In this file we define `formal_multilinear_series 𝕜 E F` to be a family of `n`-multilinear maps for
13+
all `n`, designed to model the sequence of derivatives of a function. In other files we use this
14+
notion to define `C^n` functions (called `times_cont_diff` in `mathlib`) and analytic functions.
15+
16+
## Notations
17+
18+
We use the notation `E [×n]→L[𝕜] F` for the space of continuous multilinear maps on `E^n` with
19+
values in `F`. This is the space in which the `n`-th derivative of a function from `E` to `F` lives.
20+
21+
## Tags
22+
23+
multilinear, formal series
24+
-/
25+
26+
noncomputable theory
27+
28+
open set fin
29+
open_locale topological_space
30+
31+
variables {𝕜 : Type*} [nondiscrete_normed_field 𝕜]
32+
{E : Type*} [normed_group E] [normed_space 𝕜 E]
33+
{F : Type*} [normed_group F] [normed_space 𝕜 F]
34+
35+
/-- A formal multilinear series over a field `𝕜`, from `E` to `F`, is given by a family of
36+
multilinear maps from `E^n` to `F` for all `n`. -/
37+
@[derive add_comm_group]
38+
def formal_multilinear_series
39+
(𝕜 : Type*) [nondiscrete_normed_field 𝕜]
40+
(E : Type*) [normed_group E] [normed_space 𝕜 E]
41+
(F : Type*) [normed_group F] [normed_space 𝕜 F] :=
42+
Π (n : ℕ), (E [×n]→L[𝕜] F)
43+
44+
instance : inhabited (formal_multilinear_series 𝕜 E F) := ⟨0
45+
46+
section module
47+
/- `derive` is not able to find the module structure, probably because Lean is confused by the
48+
dependent types. We register it explicitly. -/
49+
local attribute [reducible] formal_multilinear_series
50+
51+
instance : module 𝕜 (formal_multilinear_series 𝕜 E F) :=
52+
begin
53+
letI : ∀ n, module 𝕜 (continuous_multilinear_map 𝕜 (λ (i : fin n), E) F) :=
54+
λ n, by apply_instance,
55+
apply_instance
56+
end
57+
58+
end module
59+
60+
namespace formal_multilinear_series
61+
62+
variables (p : formal_multilinear_series 𝕜 E F)
63+
64+
/-- Forgetting the zeroth term in a formal multilinear series, and interpreting the following terms
65+
as multilinear maps into `E →L[𝕜] F`. If `p` corresponds to the Taylor series of a function, then
66+
`p.shift` is the Taylor series of the derivative of the function. -/
67+
def shift : formal_multilinear_series 𝕜 E (E →L[𝕜] F) :=
68+
λn, (p n.succ).curry_right
69+
70+
/-- Adding a zeroth term to a formal multilinear series taking values in `E →L[𝕜] F`. This
71+
corresponds to starting from a Taylor series for the derivative of a function, and building a Taylor
72+
series for the function itself. -/
73+
def unshift (q : formal_multilinear_series 𝕜 E (E →L[𝕜] F)) (z : F) :
74+
formal_multilinear_series 𝕜 E F
75+
| 0 := (continuous_multilinear_curry_fin0 𝕜 E F).symm z
76+
| (n + 1) := continuous_multilinear_curry_right_equiv' 𝕜 n E F (q n)
77+
78+
/-- Convenience congruence lemma stating in a dependent setting that, if the arguments to a formal
79+
multilinear series are equal, then the values are also equal. -/
80+
lemma congr (p : formal_multilinear_series 𝕜 E F) {m n : ℕ} {v : fin m → E} {w : fin n → E}
81+
(h1 : m = n) (h2 : ∀ (i : ℕ) (him : i < m) (hin : i < n), v ⟨i, him⟩ = w ⟨i, hin⟩) :
82+
p m v = p n w :=
83+
by { cases h1, congr' with ⟨i, hi⟩, exact h2 i hi hi }
84+
85+
variables (𝕜) {𝕜' : Type*} [nondiscrete_normed_field 𝕜'] [normed_algebra 𝕜 𝕜']
86+
variables [normed_space 𝕜' E] [is_scalar_tower 𝕜 𝕜' E]
87+
variables [normed_space 𝕜' F] [is_scalar_tower 𝕜 𝕜' F]
88+
89+
/-- Reinterpret a formal `𝕜'`-multilinear series as a formal `𝕜`-multilinear series, where `𝕜'` is a
90+
normed algebra over `𝕜`. -/
91+
@[simp] protected def restrict_scalars (p : formal_multilinear_series 𝕜' E F) :
92+
formal_multilinear_series 𝕜 E F :=
93+
λ n, (p n).restrict_scalars 𝕜
94+
95+
end formal_multilinear_series

src/analysis/calculus/times_cont_diff.lean

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Sébastien Gouëzel
55
-/
66
import analysis.calculus.mean_value
7+
import analysis.calculus.formal_multilinear_series
78

89
/-!
910
# Higher differentiability
@@ -32,8 +33,6 @@ We prove basic properties of these notions.
3233
## Main definitions and results
3334
Let `f : E → F` be a map between normed vector spaces over a nondiscrete normed field `𝕜`.
3435
35-
* `formal_multilinear_series 𝕜 E F`: a family of `n`-multilinear maps for all `n`, designed to
36-
model the sequence of derivatives of a function.
3736
* `has_ftaylor_series_up_to n f p`: expresses that the formal multilinear series `p` is a sequence
3837
of iterated derivatives of `f`, up to the `n`-th term (where `n` is a natural number or `∞`).
3938
* `has_ftaylor_series_up_to_on n f p s`: same thing, but inside a set `s`. The notion of derivative
@@ -176,58 +175,6 @@ variables {𝕜 : Type*} [nondiscrete_normed_field 𝕜]
176175
{s s₁ t u : set E} {f f₁ : E → F} {g : F → G} {x : E} {c : F}
177176
{b : E × F → G}
178177

179-
/-- A formal multilinear series over a field `𝕜`, from `E` to `F`, is given by a family of
180-
multilinear maps from `E^n` to `F` for all `n`. -/
181-
@[derive add_comm_group]
182-
def formal_multilinear_series
183-
(𝕜 : Type*) [nondiscrete_normed_field 𝕜]
184-
(E : Type*) [normed_group E] [normed_space 𝕜 E]
185-
(F : Type*) [normed_group F] [normed_space 𝕜 F] :=
186-
Π (n : ℕ), (E [×n]→L[𝕜] F)
187-
188-
instance : inhabited (formal_multilinear_series 𝕜 E F) := ⟨0
189-
190-
section module
191-
/- `derive` is not able to find the module structure, probably because Lean is confused by the
192-
dependent types. We register it explicitly. -/
193-
local attribute [reducible] formal_multilinear_series
194-
195-
instance : module 𝕜 (formal_multilinear_series 𝕜 E F) :=
196-
begin
197-
letI : ∀ n, module 𝕜 (continuous_multilinear_map 𝕜 (λ (i : fin n), E) F) :=
198-
λ n, by apply_instance,
199-
apply_instance
200-
end
201-
202-
end module
203-
204-
namespace formal_multilinear_series
205-
206-
variables (p : formal_multilinear_series 𝕜 E F)
207-
208-
/-- Forgetting the zeroth term in a formal multilinear series, and interpreting the following terms
209-
as multilinear maps into `E →L[𝕜] F`. If `p` corresponds to the Taylor series of a function, then
210-
`p.shift` is the Taylor series of the derivative of the function. -/
211-
def shift : formal_multilinear_series 𝕜 E (E →L[𝕜] F) :=
212-
λn, (p n.succ).curry_right
213-
214-
/-- Adding a zeroth term to a formal multilinear series taking values in `E →L[𝕜] F`. This
215-
corresponds to starting from a Taylor series for the derivative of a function, and building a Taylor
216-
series for the function itself. -/
217-
def unshift (q : formal_multilinear_series 𝕜 E (E →L[𝕜] F)) (z : F) :
218-
formal_multilinear_series 𝕜 E F
219-
| 0 := (continuous_multilinear_curry_fin0 𝕜 E F).symm z
220-
| (n + 1) := continuous_multilinear_curry_right_equiv' 𝕜 n E F (q n)
221-
222-
/-- Convenience congruence lemma stating in a dependent setting that, if the arguments to a formal
223-
multilinear series are equal, then the values are also equal. -/
224-
lemma congr (p : formal_multilinear_series 𝕜 E F) {m n : ℕ} {v : fin m → E} {w : fin n → E}
225-
(h1 : m = n) (h2 : ∀ (i : ℕ) (him : i < m) (hin : i < n), v ⟨i, him⟩ = w ⟨i, hin⟩) :
226-
p m v = p n w :=
227-
by { cases h1, congr' with ⟨i, hi⟩, exact h2 i hi hi }
228-
229-
end formal_multilinear_series
230-
231178
/-! ### Functions with a Taylor series on a domain -/
232179

233180
variable {p : E → formal_multilinear_series 𝕜 E F}
@@ -2752,12 +2699,6 @@ variables [normed_space 𝕜' E] [is_scalar_tower 𝕜 𝕜' E]
27522699
variables [normed_space 𝕜' F] [is_scalar_tower 𝕜 𝕜' F]
27532700
variables {p' : E → formal_multilinear_series 𝕜' E F} {n : with_top ℕ}
27542701

2755-
/-- Reinterpret a formal `𝕜'`-multilinear series as a formal `𝕜`-multilinear series, where `𝕜'` is a
2756-
normed algebra over `𝕜`. -/
2757-
@[simp] def formal_multilinear_series.restrict_scalars (p : formal_multilinear_series 𝕜' E F) :
2758-
formal_multilinear_series 𝕜 E F :=
2759-
λ n, (p n).restrict_scalars 𝕜
2760-
27612702
lemma has_ftaylor_series_up_to_on.restrict_scalars
27622703
(h : has_ftaylor_series_up_to_on n f p' s) :
27632704
has_ftaylor_series_up_to_on n f (λ x, (p' x).restrict_scalars 𝕜) s :=

0 commit comments

Comments
 (0)