Skip to content

Commit 3bdc704

Browse files
committed
chore(Analysis/SchwartzSpace): explicit variables for derivCLM and fderivCLM (leanprover-community#33415)
The variables for the domain and codomain were implicit, but since the operators are bundled continuous linear maps, the typical convention is to make these variables explicit.
1 parent 13fd9ce commit 3bdc704

1 file changed

Lines changed: 30 additions & 26 deletions

File tree

Mathlib/Analysis/Distribution/SchwartzSpace.lean

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -876,10 +876,31 @@ section Derivatives
876876
/-! ### Derivatives of Schwartz functions -/
877877

878878
variable (𝕜)
879-
variable [RCLike 𝕜] [NormedSpace 𝕜 F] [SMulCommClass ℝ 𝕜 F]
879+
variable [RCLike 𝕜] [NormedSpace 𝕜 F]
880+
881+
variable (F) in
882+
/-- The 1-dimensional derivative on Schwartz space as a continuous `𝕜`-linear map. -/
883+
def derivCLM : 𝓢(ℝ, F) →L[𝕜] 𝓢(ℝ, F) :=
884+
mkCLM (deriv ·) (fun f g _ => deriv_add f.differentiableAt g.differentiableAt)
885+
(fun a f _ => deriv_const_smul a f.differentiableAt)
886+
(fun f => (contDiff_succ_iff_deriv.mp (f.smooth ⊤)).2.2) fun ⟨k, n⟩ =>
887+
⟨{⟨k, n + 1⟩}, 1, zero_le_one, fun f x => by
888+
simpa only [Real.norm_eq_abs, Finset.sup_singleton, schwartzSeminormFamily_apply, one_mul,
889+
norm_iteratedFDeriv_eq_norm_iteratedDeriv, ← iteratedDeriv_succ'] using
890+
f.le_seminorm' 𝕜 k (n + 1) x⟩
891+
892+
@[simp]
893+
theorem derivCLM_apply (f : 𝓢(ℝ, F)) (x : ℝ) : derivCLM 𝕜 F f x = deriv f x :=
894+
rfl
895+
896+
theorem hasDerivAt (f : 𝓢(ℝ, F)) (x : ℝ) : HasDerivAt f (deriv f x) x :=
897+
f.differentiableAt.hasDerivAt
898+
899+
variable [SMulCommClass ℝ 𝕜 F]
880900

881901
open LineDeriv
882902

903+
variable (E F) in
883904
/-- The Fréchet derivative on Schwartz space as a continuous `𝕜`-linear map. -/
884905
def fderivCLM : 𝓢(E, F) →L[𝕜] 𝓢(E, E →L[ℝ] F) :=
885906
mkCLM (fderiv ℝ ·) (fun f g _ => fderiv_add f.differentiableAt g.differentiableAt)
@@ -890,47 +911,30 @@ def fderivCLM : 𝓢(E, F) →L[𝕜] 𝓢(E, E →L[ℝ] F) :=
890911
one_smul, norm_iteratedFDeriv_fderiv, one_mul] using f.le_seminorm 𝕜 k (n + 1) x⟩
891912

892913
@[simp]
893-
theorem fderivCLM_apply (f : 𝓢(E, F)) (x : E) : fderivCLM 𝕜 f x = fderiv ℝ f x :=
914+
theorem fderivCLM_apply (f : 𝓢(E, F)) (x : E) : fderivCLM 𝕜 E F f x = fderiv ℝ f x :=
894915
rfl
895916

896917
theorem hasFDerivAt (f : 𝓢(E, F)) (x : E) : HasFDerivAt f (fderiv ℝ f x) x :=
897918
f.differentiableAt.hasFDerivAt
898919

899-
/-- The 1-dimensional derivative on Schwartz space as a continuous `𝕜`-linear map. -/
900-
def derivCLM : 𝓢(ℝ, F) →L[𝕜] 𝓢(ℝ, F) :=
901-
mkCLM (deriv ·) (fun f g _ => deriv_add f.differentiableAt g.differentiableAt)
902-
(fun a f _ => deriv_const_smul a f.differentiableAt)
903-
(fun f => (contDiff_succ_iff_deriv.mp (f.smooth ⊤)).2.2) fun ⟨k, n⟩ =>
904-
⟨{⟨k, n + 1⟩}, 1, zero_le_one, fun f x => by
905-
simpa only [Real.norm_eq_abs, Finset.sup_singleton, schwartzSeminormFamily_apply, one_mul,
906-
norm_iteratedFDeriv_eq_norm_iteratedDeriv, ← iteratedDeriv_succ'] using
907-
f.le_seminorm' 𝕜 k (n + 1) x⟩
908-
909-
@[simp]
910-
theorem derivCLM_apply (f : 𝓢(ℝ, F)) (x : ℝ) : derivCLM 𝕜 f x = deriv f x :=
911-
rfl
912-
913-
theorem hasDerivAt (f : 𝓢(ℝ, F)) (x : ℝ) : HasDerivAt f (deriv f x) x :=
914-
f.differentiableAt.hasDerivAt
915-
916920
/-- The partial derivative (or directional derivative) in the direction `m : E` as a
917921
continuous linear map on Schwartz space. -/
918922
instance instLineDeriv : LineDeriv E 𝓢(E, F) 𝓢(E, F) where
919-
lineDerivOp m f := (SchwartzMap.evalCLM m).comp (fderivCLM 𝕜) f
923+
lineDerivOp m f := (SchwartzMap.evalCLM m).comp (fderivCLM ℝ E F) f
920924

921925
instance instLineDerivAdd : LineDerivAdd E 𝓢(E, F) 𝓢(E, F) where
922-
lineDerivOp_add m := ((SchwartzMap.evalCLM m).comp (fderivCLM 𝕜)).map_add
926+
lineDerivOp_add m := ((SchwartzMap.evalCLM m).comp (fderivCLM ℝ E F)).map_add
923927

924928
instance instLineDerivSMul : LineDerivSMul 𝕜 E 𝓢(E, F) 𝓢(E, F) where
925-
lineDerivOp_smul m := ((SchwartzMap.evalCLM m).comp (fderivCLM 𝕜)).map_smul
929+
lineDerivOp_smul m := ((SchwartzMap.evalCLM m).comp (fderivCLM 𝕜 E F)).map_smul
926930

927931
instance instContinuousLineDeriv : ContinuousLineDeriv E 𝓢(E, F) 𝓢(E, F) where
928-
continuous_lineDerivOp m := ((SchwartzMap.evalCLM m).comp (fderivCLM 𝕜)).continuous
932+
continuous_lineDerivOp m := ((SchwartzMap.evalCLM m).comp (fderivCLM ℝ E F)).continuous
929933

930934
open LineDeriv
931935

932936
theorem lineDerivOpCLM_eq (m : E) :
933-
lineDerivOpCLM 𝕜 𝓢(E, F) m = (SchwartzMap.evalCLM m).comp (fderivCLM 𝕜) := rfl
937+
lineDerivOpCLM 𝕜 𝓢(E, F) m = (SchwartzMap.evalCLM m).comp (fderivCLM 𝕜 E F) := rfl
934938

935939
@[deprecated (since := "2025-11-25")]
936940
alias pderivCLM := lineDerivOpCLM
@@ -1318,8 +1322,8 @@ theorem integral_bilinear_deriv_right_eq_neg_left (f : 𝓢(ℝ, E)) (g : 𝓢(
13181322
(L : E →L[ℝ] F →L[ℝ] V) :
13191323
∫ (x : ℝ), L (f x) (deriv g x) = -∫ (x : ℝ), L (deriv f x) (g x) :=
13201324
MeasureTheory.integral_bilinear_hasDerivAt_right_eq_neg_left_of_integrable
1321-
f.hasDerivAt g.hasDerivAt (pairing L f (derivCLM ℝ g)).integrable
1322-
(pairing L (derivCLM ℝ f) g).integrable (pairing L f g).integrable
1325+
f.hasDerivAt g.hasDerivAt (pairing L f (derivCLM ℝ F g)).integrable
1326+
(pairing L (derivCLM ℝ E f) g).integrable (pairing L f g).integrable
13231327

13241328
variable [NormedRing 𝕜] [NormedSpace ℝ 𝕜] [IsScalarTower ℝ 𝕜 𝕜] [SMulCommClass ℝ 𝕜 𝕜] in
13251329
/-- Integration by parts of Schwartz functions for the 1-dimensional derivative.

0 commit comments

Comments
 (0)