Documentation

Mathlib.Analysis.Calculus.DifferentialForm.Basic

Exterior derivative of a differential form on a normed space #

In this file we define the exterior derivative of a differential form on a normed space. Under certain smoothness assumptions, we prove that this operation is linear in the form and the second exterior derivative of a form is zero.

We represent a differential n-form on E taking values in F as E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F.

Implementation notes #

There are a few competing definitions of the exterior derivative of a differential form that differ from each other by a normalization factor. We use the following one:

$$ dฯ‰(x; v_0, \dots, v_n) = \sum_{i=0}^n (-1)^i D_x ฯ‰(x; v_0, \dots, \widehat{v_i}, \dots, v_n) ยท v_i $$

where $$\widehat{v_i}$$ means that we omit this element of the tuple, see extDeriv_apply.

TODO #

noncomputable def extDeriv {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) (x : E) :
E [โ‹€^Fin (n + 1)]โ†’L[๐•œ] F

Exterior derivative of a differential form.

There are a few competing definitions of the exterior derivative of a differential form that differ from each other by a normalization factor. We use the following one:

$$ dฯ‰(x; v_0, \dots, v_n) = \sum_{i=0}^n (-1)^i D_x ฯ‰(x; v_0, \dots, \widehat{v_i}, \dots, v_n) ยท v_i $$

where $$\widehat{v_i}$$ means that we omit this element of the tuple, see extDeriv_apply.

Equations
Instances For
    noncomputable def extDerivWithin {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) (s : Set E) (x : E) :
    E [โ‹€^Fin (n + 1)]โ†’L[๐•œ] F

    Exterior derivative of a differential form within a set.

    There are a few competing definitions of the exterior derivative of a differential form that differ from each other by a normalization factor. We use the following one:

    $$ dฯ‰(x; v_0, \dots, v_n) = \sum_{i=0}^n (-1)^i D_x ฯ‰(x; v_0, \dots, \widehat{v_i}, \dots, v_n) ยท v_i $$

    where $$\widehat{v_i}$$ means that we omit this element of the tuple, see extDerivWithin_apply.

    Equations
    Instances For
      @[simp]
      theorem extDerivWithin_univ {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) :
      theorem extDerivWithin_add {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hsx : UniqueDiffWithinAt ๐•œ s x) (hฯ‰โ‚ : DifferentiableWithinAt ๐•œ ฯ‰โ‚ s x) (hฯ‰โ‚‚ : DifferentiableWithinAt ๐•œ ฯ‰โ‚‚ s x) :
      extDerivWithin (ฯ‰โ‚ + ฯ‰โ‚‚) s x = extDerivWithin ฯ‰โ‚ s x + extDerivWithin ฯ‰โ‚‚ s x
      theorem extDerivWithin_fun_add {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hsx : UniqueDiffWithinAt ๐•œ s x) (hฯ‰โ‚ : DifferentiableWithinAt ๐•œ ฯ‰โ‚ s x) (hฯ‰โ‚‚ : DifferentiableWithinAt ๐•œ ฯ‰โ‚‚ s x) :
      extDerivWithin (fun (x : E) => ฯ‰โ‚ x + ฯ‰โ‚‚ x) s x = extDerivWithin ฯ‰โ‚ s x + extDerivWithin ฯ‰โ‚‚ s x
      theorem extDeriv_add {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (hฯ‰โ‚ : DifferentiableAt ๐•œ ฯ‰โ‚ x) (hฯ‰โ‚‚ : DifferentiableAt ๐•œ ฯ‰โ‚‚ x) :
      extDeriv (ฯ‰โ‚ + ฯ‰โ‚‚) x = extDeriv ฯ‰โ‚ x + extDeriv ฯ‰โ‚‚ x
      theorem extDeriv_fun_add {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (hฯ‰โ‚ : DifferentiableAt ๐•œ ฯ‰โ‚ x) (hฯ‰โ‚‚ : DifferentiableAt ๐•œ ฯ‰โ‚‚ x) :
      extDeriv (fun (x : E) => ฯ‰โ‚ x + ฯ‰โ‚‚ x) x = extDeriv ฯ‰โ‚ x + extDeriv ฯ‰โ‚‚ x
      theorem extDerivWithin_smul {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {s : Set E} {x : E} (c : ๐•œ) (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) (hsx : UniqueDiffWithinAt ๐•œ s x) :
      extDerivWithin (c โ€ข ฯ‰) s x = c โ€ข extDerivWithin ฯ‰ s x
      theorem extDerivWithin_fun_smul {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {s : Set E} {x : E} (c : ๐•œ) (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) (hsx : UniqueDiffWithinAt ๐•œ s x) :
      extDerivWithin (fun (x : E) => c โ€ข ฯ‰ x) s x = c โ€ข extDerivWithin ฯ‰ s x
      theorem extDeriv_smul {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {x : E} (c : ๐•œ) (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) :
      extDeriv (c โ€ข ฯ‰) x = c โ€ข extDeriv ฯ‰ x
      theorem extDeriv_fun_smul {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {x : E} (c : ๐•œ) (ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F) :
      extDeriv (c โ€ข ฯ‰) x = c โ€ข extDeriv ฯ‰ x
      theorem extDerivWithin_constOfIsEmpty {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} {x : E} (f : E โ†’ F) (hs : UniqueDiffWithinAt ๐•œ s x) :
      extDerivWithin (fun (x : E) => ContinuousAlternatingMap.constOfIsEmpty ๐•œ E (Fin 0) (f x)) s x = (ContinuousAlternatingMap.ofSubsingleton ๐•œ E F 0) (fderivWithin ๐•œ f s x)

      The exterior derivative of a 0-form given by a function f within a set is the 1-form given by the derivative of f within the set.

      theorem extDeriv_constOfIsEmpty {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : E โ†’ F) (x : E) :
      extDeriv (fun (x : E) => ContinuousAlternatingMap.constOfIsEmpty ๐•œ E (Fin 0) (f x)) x = (ContinuousAlternatingMap.ofSubsingleton ๐•œ E F 0) (fderiv ๐•œ f x)

      The exterior derivative of a 0-form given by a function f is the 1-form given by the derivative of f.

      theorem Filter.EventuallyEq.extDerivWithin_eq {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : ฯ‰โ‚ =แถ [nhdsWithin x s] ฯ‰โ‚‚) (hx : ฯ‰โ‚ x = ฯ‰โ‚‚ x) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem Filter.EventuallyEq.extDerivWithin_eq_of_mem {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : ฯ‰โ‚ =แถ [nhdsWithin x s] ฯ‰โ‚‚) (hx : x โˆˆ s) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem Filter.EventuallyEq.extDerivWithin_eq_of_insert {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : ฯ‰โ‚ =แถ [nhdsWithin x (insert x s)] ฯ‰โ‚‚) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem Filter.EventuallyEq.extDerivWithin' {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s t : Set E} {x : E} (hs : ฯ‰โ‚ =แถ [nhdsWithin x s] ฯ‰โ‚‚) (ht : t โІ s) :
      extDerivWithin ฯ‰โ‚ t =แถ [nhdsWithin x s] extDerivWithin ฯ‰โ‚‚ t
      theorem Filter.EventuallyEq.extDerivWithin {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : ฯ‰โ‚ =แถ [nhdsWithin x s] ฯ‰โ‚‚) :
      extDerivWithin ฯ‰โ‚ s =แถ [nhdsWithin x s] extDerivWithin ฯ‰โ‚‚ s
      theorem Filter.EventuallyEq.extDerivWithin_eq_nhds {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (h : ฯ‰โ‚ =แถ [nhds x] ฯ‰โ‚‚) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem extDerivWithin_congr {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : Set.EqOn ฯ‰โ‚ ฯ‰โ‚‚ s) (hx : ฯ‰โ‚ x = ฯ‰โ‚‚ x) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem extDerivWithin_congr' {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hs : Set.EqOn ฯ‰โ‚ ฯ‰โ‚‚ s) (hx : x โˆˆ s) :
      extDerivWithin ฯ‰โ‚ s x = extDerivWithin ฯ‰โ‚‚ s x
      theorem Filter.EventuallyEq.extDeriv {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (h : ฯ‰โ‚ =แถ [nhds x] ฯ‰โ‚‚) :
      extDeriv ฯ‰โ‚ =แถ [nhds x] extDeriv ฯ‰โ‚‚
      theorem Filter.EventuallyEq.extDeriv_eq {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰โ‚ ฯ‰โ‚‚ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (h : ฯ‰โ‚ =แถ [nhds x] ฯ‰โ‚‚) :
      extDeriv ฯ‰โ‚ x = extDeriv ฯ‰โ‚‚ x
      theorem extDerivWithin_apply {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (h : DifferentiableWithinAt ๐•œ ฯ‰ s x) (hs : UniqueDiffWithinAt ๐•œ s x) (v : Fin (n + 1) โ†’ E) :
      (extDerivWithin ฯ‰ s x) v = โˆ‘ i : Fin (n + 1), (-1) ^ โ†‘i โ€ข (fderivWithin ๐•œ (fun (x : E) => (ฯ‰ x) (i.removeNth v)) s x) (v i)
      theorem extDeriv_apply {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (h : DifferentiableAt ๐•œ ฯ‰ x) (v : Fin (n + 1) โ†’ E) :
      (extDeriv ฯ‰ x) v = โˆ‘ i : Fin (n + 1), (-1) ^ โ†‘i โ€ข (fderiv ๐•œ (fun (x : E) => (ฯ‰ x) (i.removeNth v)) x) (v i)
      theorem extDerivWithin_extDerivWithin_apply {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {r : WithTop โ„•โˆž} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} {x : E} (hฯ‰ : ContDiffWithinAt ๐•œ r ฯ‰ s x) (hr : minSmoothness ๐•œ 2 โ‰ค r) (hs : UniqueDiffOn ๐•œ s) (hx : x โˆˆ closure (interior s)) (h'x : x โˆˆ s) :

      The second exterior derivative of a sufficiently smooth differential form is zero.

      theorem extDerivWithin_extDerivWithin_eqOn {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {r : WithTop โ„•โˆž} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {s : Set E} (hฯ‰ : ContDiffOn ๐•œ r ฯ‰ s) (hr : minSmoothness ๐•œ 2 โ‰ค r) (hs : UniqueDiffOn ๐•œ s) :

      The second exterior derivative of a sufficiently smooth differential form is zero.

      theorem extDeriv_extDeriv_apply {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {r : WithTop โ„•โˆž} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} {x : E} (hฯ‰ : ContDiffAt ๐•œ r ฯ‰ x) (hr : minSmoothness ๐•œ 2 โ‰ค r) :
      extDeriv (extDeriv ฯ‰) x = 0

      The second exterior derivative of a sufficiently smooth differential form is zero.

      theorem extDeriv_extDeriv {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {n : โ„•} {r : WithTop โ„•โˆž} {ฯ‰ : E โ†’ E [โ‹€^Fin n]โ†’L[๐•œ] F} (h : ContDiff ๐•œ r ฯ‰) (hr : minSmoothness ๐•œ 2 โ‰ค r) :
      extDeriv (extDeriv ฯ‰) = 0

      The second exterior derivative of a sufficiently smooth differential form is zero.