Documentation

Mathlib.Analysis.Distribution.DerivNotation

Type classes for derivatives and the Laplacian #

In this file we define notation type classes for line derivatives, also known as partial derivatives, and for the Laplacian.

Moreover, we provide type-classes that encode the linear structure. We also define the iterated line derivative and prove elementary properties. We define a Laplacian based on the sum of second derivatives formula and prove that the Laplacian thus defined is independent of the choice of basis.

Currently, this type class is only used by Schwartz functions. Future uses include derivatives on test functions, distributions, tempered distributions, and Sobolev spaces (and other generalized function spaces).

Line derivative #

class LineDeriv (V : Type u) (E : Type v) (F : outParam (Type w)) :
Type (max (max u v) w)

The notation typeclass for the line derivative.

  • lineDerivOp : VEF

    ∂_{v} f is the line derivative of f in direction v. The meaning of this notation is type-dependent.

Instances

    ∂_{v} f is the line derivative of f in direction v. The meaning of this notation is type-dependent.

    Equations
      Instances For
        def LineDeriv.iteratedLineDerivOp {V : Type u_11} {E : Type u_12} [LineDeriv V E E] {n : } :
        (Fin nV)EE

        ∂^{m} f is the iterated line derivative of f, where m is a finite number of (different) directions.

        Equations
          Instances For

            ∂^{m} f is the iterated line derivative of f, where m is a finite number of (different) directions.

            Equations
              Instances For
                @[simp]
                theorem LineDeriv.iteratedLineDerivOp_fin_zero {V : Type u_11} {E : Type u_12} [LineDeriv V E E] (m : Fin 0V) (f : E) :
                @[simp]
                theorem LineDeriv.iteratedLineDerivOp_one {V : Type u_11} {E : Type u_12} [LineDeriv V E E] (m : Fin 1V) (f : E) :
                theorem LineDeriv.iteratedLineDerivOp_succ_left {V : Type u_11} {E : Type u_12} [LineDeriv V E E] {n : } (m : Fin (n + 1)V) (f : E) :
                theorem LineDeriv.iteratedLineDerivOp_succ_right {V : Type u_11} {E : Type u_12} [LineDeriv V E E] {n : } (m : Fin (n + 1)V) (f : E) :
                @[simp]
                theorem LineDeriv.iteratedLineDerivOp_const_eq_iter_lineDerivOp {V : Type u_11} {E : Type u_12} [LineDeriv V E E] (n : ) (y : V) (f : E) :
                iteratedLineDerivOp (fun (x : Fin n) => y) f = (lineDerivOp y)^[n] f
                class LineDerivAdd (V : Type u) (E : Type v) (F : outParam (Type w)) [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] :

                The line derivative is additive, ∂_{v} (x + y) = ∂_{v} x + ∂_{v} y for all x y : E and ∂_{v + w} x = ∂_{v} x + ∂_{w} y for all v w : V.

                Note that lineDeriv on functions is not additive.

                Instances
                  class LineDerivSMul (R : Type u_11) (V : Type u) (E : Type v) (F : outParam (Type w)) [SMul R E] [SMul R F] [LineDeriv V E F] :

                  The line derivative commutes with scalar multiplication, ∂_{v} (r • x) = r • ∂_{v} x for all r : R and x : E.

                  Instances
                    class LineDerivLeftSMul (R : Type u_11) (V : Type u) (E : Type v) (F : outParam (Type w)) [SMul R V] [SMul R F] [LineDeriv V E F] :

                    The line derivative commutes with scalar multiplication, ∂_{r • v} x = r • ∂_{v} x for all r : R and v : V.

                    Instances

                      The line derivative is continuous.

                      Instances
                        @[simp]
                        theorem LineDeriv.lineDerivOp_zero {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (v : V) :
                        @[simp]
                        theorem LineDeriv.lineDerivOp_neg {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (v : V) (x : E) :
                        @[simp]
                        theorem LineDeriv.lineDerivOp_sum {ι : Type u_1} {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (v : V) (f : ιE) (s : Finset ι) :
                        lineDerivOp v (∑ is, f i) = is, lineDerivOp v (f i)
                        @[simp]
                        theorem LineDeriv.lineDerivOp_left_zero {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (x : E) :
                        @[simp]
                        theorem LineDeriv.lineDerivOp_left_neg {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (v : V) (x : E) :
                        @[simp]
                        theorem LineDeriv.lineDerivOp_left_sum {ι : Type u_1} {V : Type u_5} {E : Type u_6} {F : Type u_7} [AddCommGroup V] [AddCommGroup E] [AddCommGroup F] [LineDeriv V E F] [LineDerivAdd V E F] (f : ιV) (x : E) (s : Finset ι) :
                        lineDerivOp (∑ is, f i) x = is, lineDerivOp (f i) x
                        def LineDeriv.lineDerivOpCLM (R : Type u_4) {V : Type u_5} (E : Type u_6) {F : Type u_7} [Ring R] [AddCommGroup E] [Module R E] [AddCommGroup F] [Module R F] [TopologicalSpace E] [TopologicalSpace F] [AddCommGroup V] [LineDeriv V E F] [LineDerivAdd V E F] [LineDerivSMul R V E F] [ContinuousLineDeriv V E F] (m : V) :
                        E →L[R] F

                        The line derivative as a continuous linear map.

                        Equations
                          Instances For
                            @[simp]
                            theorem LineDeriv.lineDerivOpCLM_apply {R : Type u_4} {V : Type u_5} {E : Type u_6} {F : Type u_7} [Ring R] [AddCommGroup E] [Module R E] [AddCommGroup F] [Module R F] [TopologicalSpace E] [TopologicalSpace F] [AddCommGroup V] [LineDeriv V E F] [LineDerivAdd V E F] [LineDerivSMul R V E F] [ContinuousLineDeriv V E F] (m : V) (x : E) :
                            theorem LineDeriv.iteratedLineDerivOp_add {V : Type u_5} {E : Type u_6} [LineDeriv V E E] {n : } (m : Fin nV) [AddCommGroup V] [AddCommGroup E] [LineDerivAdd V E E] (x y : E) :
                            @[simp]
                            theorem LineDeriv.iteratedLineDerivOp_zero {V : Type u_5} {E : Type u_6} [LineDeriv V E E] {n : } (m : Fin nV) [AddCommGroup V] [AddCommGroup E] [LineDerivAdd V E E] :
                            @[simp]
                            theorem LineDeriv.iteratedLineDerivOp_neg {V : Type u_5} {E : Type u_6} [LineDeriv V E E] {n : } (m : Fin nV) [AddCommGroup V] [AddCommGroup E] [LineDerivAdd V E E] (x : E) :
                            @[simp]
                            theorem LineDeriv.iteratedLineDerivOp_sum {ι : Type u_1} {V : Type u_5} {E : Type u_6} [LineDeriv V E E] {n : } (m : Fin nV) [AddCommGroup V] [AddCommGroup E] [LineDerivAdd V E E] (f : ιE) (s : Finset ι) :
                            iteratedLineDerivOp m (∑ is, f i) = is, iteratedLineDerivOp m (f i)
                            theorem LineDeriv.iteratedLineDerivOp_smul {R : Type u_4} {V : Type u_5} {E : Type u_6} [LineDeriv V E E] {n : } (m : Fin nV) [SMul R E] [LineDerivSMul R V E E] (r : R) (x : E) :
                            def LineDeriv.iteratedLineDerivOpCLM (R : Type u_4) {V : Type u_5} (E : Type u_6) [LineDeriv V E E] [TopologicalSpace E] [Ring R] [AddCommGroup V] [AddCommGroup E] [Module R E] [LineDerivAdd V E E] [LineDerivSMul R V E E] [ContinuousLineDeriv V E E] {n : } (m : Fin nV) :
                            E →L[R] E

                            The iterated line derivative as a continuous linear map.

                            Equations
                              Instances For
                                @[simp]
                                theorem LineDeriv.iteratedLineDerivOpCLM_apply {R : Type u_4} {V : Type u_5} {E : Type u_6} [LineDeriv V E E] [TopologicalSpace E] [Ring R] [AddCommGroup V] [AddCommGroup E] [Module R E] [LineDerivAdd V E E] [LineDerivSMul R V E E] [ContinuousLineDeriv V E E] {n : } (m : Fin nV) (x : E) :

                                Laplacian #

                                class Laplacian (E : Type v) (F : outParam (Type w)) :
                                Type (max v w)

                                The notation typeclass for the Laplace operator.

                                • laplacian : EF

                                  Δ f is the Laplacian of f. The meaning of this notation is type-dependent.

                                Instances

                                  Δ f is the Laplacian of f. The meaning of this notation is type-dependent.

                                  Equations
                                    Instances For

                                      Laplacian of LineDeriv #

                                      def LineDeriv.bilinearLineDerivTwo (R : Type u_4) {E : Type u_6} {V₁ : Type u_8} {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [CommRing R] [AddCommGroup E] [Module R E] [Module R V₂] [Module R V₃] [LineDerivAdd E V₂ V₃] [LineDerivAdd E V₁ V₂] [LineDerivSMul R E V₂ V₃] [LineDerivLeftSMul R E V₁ V₂] [LineDerivLeftSMul R E V₂ V₃] (f : V₁) :
                                      E →ₗ[R] E →ₗ[R] V₃

                                      The second derivative in terms lineDerivOp as a bilinear map.

                                      Mainly used to give an abstract definition of the Laplacian.

                                      Equations
                                        Instances For
                                          def LineDeriv.tensorLineDerivTwo (R : Type u_4) {E : Type u_6} {V₁ : Type u_8} {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [CommRing R] [AddCommGroup E] [Module R E] [Module R V₂] [Module R V₃] [LineDerivAdd E V₂ V₃] [LineDerivAdd E V₁ V₂] [LineDerivSMul R E V₂ V₃] [LineDerivLeftSMul R E V₁ V₂] [LineDerivLeftSMul R E V₂ V₃] (f : V₁) :

                                          The second derivative in terms lineDerivOp as a linear map from the tensor product.

                                          Mainly used to give an abstract definition of the Laplacian.

                                          Equations
                                            Instances For
                                              theorem LineDeriv.tensorLineDerivTwo_eq_lineDerivOp_lineDerivOp {R : Type u_4} {E : Type u_6} {V₁ : Type u_8} {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [CommRing R] [AddCommGroup E] [Module R E] [Module R V₂] [Module R V₃] [LineDerivAdd E V₂ V₃] [LineDerivAdd E V₁ V₂] [LineDerivSMul R E V₂ V₃] [LineDerivLeftSMul R E V₁ V₂] [LineDerivLeftSMul R E V₂ V₃] (f : V₁) (v w : E) :
                                              theorem LineDeriv.tensorLineDerivTwo_canonicalCovariantTensor_eq_sum {ι : Type u_1} {E : Type u_6} {V₁ : Type u_8} {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [NormedAddCommGroup E] [InnerProductSpace E] [FiniteDimensional E] [Module V₂] [Module V₃] [LineDerivAdd E V₁ V₂] [LineDerivAdd E V₂ V₃] [LineDerivSMul E V₂ V₃] [LineDerivLeftSMul E V₁ V₂] [LineDerivLeftSMul E V₂ V₃] [Fintype ι] (v : OrthonormalBasis ι E) (f : V₁) :
                                              def LineDeriv.laplacianCLM (R : Type u_4) (E : Type u_6) (V₁ : Type u_8) {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [NormedAddCommGroup E] [InnerProductSpace E] [CommRing R] [FiniteDimensional E] [Module R V₁] [Module R V₂] [Module R V₃] [TopologicalSpace V₁] [TopologicalSpace V₂] [TopologicalSpace V₃] [IsTopologicalAddGroup V₃] [LineDerivAdd E V₁ V₂] [LineDerivSMul R E V₁ V₂] [ContinuousLineDeriv E V₁ V₂] [LineDerivAdd E V₂ V₃] [LineDerivSMul R E V₂ V₃] [ContinuousLineDeriv E V₂ V₃] :
                                              V₁ →L[R] V₃

                                              The Laplacian defined by iterated lineDerivOp as a continuous linear map.

                                              Equations
                                                Instances For
                                                  theorem LineDeriv.laplacianCLM_eq_sum {ι : Type u_1} {E : Type u_6} {V₁ : Type u_8} {V₂ : Type u_9} {V₃ : Type u_10} [LineDeriv E V₁ V₂] [LineDeriv E V₂ V₃] [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [NormedAddCommGroup E] [InnerProductSpace E] [FiniteDimensional E] [Module V₁] [Module V₂] [Module V₃] [TopologicalSpace V₁] [TopologicalSpace V₂] [TopologicalSpace V₃] [IsTopologicalAddGroup V₃] [LineDerivAdd E V₁ V₂] [LineDerivSMul E V₁ V₂] [ContinuousLineDeriv E V₁ V₂] [LineDerivAdd E V₂ V₃] [LineDerivSMul E V₂ V₃] [ContinuousLineDeriv E V₂ V₃] [LineDerivLeftSMul E V₁ V₂] [LineDerivLeftSMul E V₂ V₃] [Fintype ι] (v : OrthonormalBasis ι E) (f : V₁) :
                                                  (laplacianCLM E V₁) f = i : ι, lineDerivOp (v i) (lineDerivOp (v i) f)