Documentation

Mathlib.Analysis.Calculus.VectorField

Vector fields in vector spaces #

We study functions of the form V : E โ†’ E on a vector space, thinking of these as vector fields. We define several notions in this context, with the aim to generalize them to vector fields on manifolds.

Notably, we define the pullback of a vector field under a map, as VectorField.pullback ๐•œ f V x := (fderiv ๐•œ f x).inverse (V (f x)) (together with the same notion within a set).

We also define the Lie bracket of two vector fields as VectorField.lieBracket ๐•œ V W x := fderiv ๐•œ W x (V x) - fderiv ๐•œ V x (W x) (together with the same notion within a set).

In addition to comprehensive API on these two notions, the main results are the following:

The Lie bracket of vector fields in a vector space #

We define the Lie bracket of two vector fields, and call it lieBracket ๐•œ V W x. We also define a version localized to sets, lieBracketWithin ๐•œ V W s x. We copy the relevant API of fderivWithin and fderiv for these notions to get a comprehensive API.

def VectorField.lieBracket (๐•œ : Type u_1) [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (V W : E โ†’ E) (x : E) :
E

The Lie bracket [V, W] (x) of two vector fields at a point, defined as DW(x) (V x) - DV(x) (W x).

Equations
Instances For
    def VectorField.lieBracketWithin (๐•œ : Type u_1) [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (V W : E โ†’ E) (s : Set E) (x : E) :
    E

    The Lie bracket [V, W] (x) of two vector fields within a set at a point, defined as DW(x) (V x) - DV(x) (W x) where the derivatives are taken inside s.

    Equations
    Instances For
      theorem VectorField.lieBracket_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} :
      VectorField.lieBracket ๐•œ V W = fun (x : E) => (fderiv ๐•œ W x) (V x) - (fderiv ๐•œ V x) (W x)
      theorem VectorField.lieBracketWithin_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} :
      VectorField.lieBracketWithin ๐•œ V W s = fun (x : E) => (fderivWithin ๐•œ W s x) (V x) - (fderivWithin ๐•œ V s x) (W x)
      @[simp]
      theorem VectorField.lieBracketWithin_univ {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} :
      VectorField.lieBracketWithin ๐•œ V W Set.univ = VectorField.lieBracket ๐•œ V W
      theorem VectorField.lieBracketWithin_eq_zero_of_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} (hV : V x = 0) (hW : W x = 0) :
      VectorField.lieBracketWithin ๐•œ V W s x = 0
      theorem VectorField.lieBracket_eq_zero_of_eq_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {x : E} (hV : V x = 0) (hW : W x = 0) :
      VectorField.lieBracket ๐•œ V W x = 0
      theorem VectorField.lieBracketWithin_smul_left {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} {c : ๐•œ} (hV : DifferentiableWithinAt ๐•œ V s x) (hs : UniqueDiffWithinAt ๐•œ s x) :
      theorem VectorField.lieBracket_smul_left {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {x : E} {c : ๐•œ} (hV : DifferentiableAt ๐•œ V x) :
      VectorField.lieBracket ๐•œ (c โ€ข V) W x = c โ€ข VectorField.lieBracket ๐•œ V W x
      theorem VectorField.lieBracketWithin_smul_right {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} {c : ๐•œ} (hW : DifferentiableWithinAt ๐•œ W s x) (hs : UniqueDiffWithinAt ๐•œ s x) :
      theorem VectorField.lieBracket_smul_right {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {x : E} {c : ๐•œ} (hW : DifferentiableAt ๐•œ W x) :
      VectorField.lieBracket ๐•œ V (c โ€ข W) x = c โ€ข VectorField.lieBracket ๐•œ V W x
      theorem VectorField.lieBracketWithin_add_left {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : DifferentiableWithinAt ๐•œ V s x) (hVโ‚ : DifferentiableWithinAt ๐•œ Vโ‚ s x) (hs : UniqueDiffWithinAt ๐•œ s x) :
      VectorField.lieBracketWithin ๐•œ (V + Vโ‚) W s x = VectorField.lieBracketWithin ๐•œ V W s x + VectorField.lieBracketWithin ๐•œ Vโ‚ W s x
      theorem VectorField.lieBracket_add_left {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ : E โ†’ E} {x : E} (hV : DifferentiableAt ๐•œ V x) (hVโ‚ : DifferentiableAt ๐•œ Vโ‚ x) :
      VectorField.lieBracket ๐•œ (V + Vโ‚) W x = VectorField.lieBracket ๐•œ V W x + VectorField.lieBracket ๐•œ Vโ‚ W x
      theorem VectorField.lieBracketWithin_add_right {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hW : DifferentiableWithinAt ๐•œ W s x) (hWโ‚ : DifferentiableWithinAt ๐•œ Wโ‚ s x) (hs : UniqueDiffWithinAt ๐•œ s x) :
      VectorField.lieBracketWithin ๐•œ V (W + Wโ‚) s x = VectorField.lieBracketWithin ๐•œ V W s x + VectorField.lieBracketWithin ๐•œ V Wโ‚ s x
      theorem VectorField.lieBracket_add_right {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Wโ‚ : E โ†’ E} {x : E} (hW : DifferentiableAt ๐•œ W x) (hWโ‚ : DifferentiableAt ๐•œ Wโ‚ x) :
      VectorField.lieBracket ๐•œ V (W + Wโ‚) x = VectorField.lieBracket ๐•œ V W x + VectorField.lieBracket ๐•œ V Wโ‚ x
      theorem VectorField.lieBracketWithin_swap {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} :
      theorem VectorField.lieBracket_swap {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {x : E} :
      VectorField.lieBracket ๐•œ V W x = -VectorField.lieBracket ๐•œ W V x
      @[simp]
      theorem VectorField.lieBracketWithin_self {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V : E โ†’ E} {s : Set E} :
      @[simp]
      theorem VectorField.lieBracket_self {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V : E โ†’ E} :
      VectorField.lieBracket ๐•œ V V = 0
      theorem ContDiffWithinAt.lieBracketWithin_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} {m n : WithTop โ„•โˆž} (hV : ContDiffWithinAt ๐•œ n V s x) (hW : ContDiffWithinAt ๐•œ n W s x) (hs : UniqueDiffOn ๐•œ s) (hmn : m + 1 โ‰ค n) (hx : x โˆˆ s) :
      ContDiffWithinAt ๐•œ m (VectorField.lieBracketWithin ๐•œ V W s) s x
      theorem ContDiffAt.lieBracket_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {x : E} {m n : WithTop โ„•โˆž} (hV : ContDiffAt ๐•œ n V x) (hW : ContDiffAt ๐•œ n W x) (hmn : m + 1 โ‰ค n) :
      ContDiffAt ๐•œ m (VectorField.lieBracket ๐•œ V W) x
      theorem ContDiffOn.lieBracketWithin_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {m n : WithTop โ„•โˆž} (hV : ContDiffOn ๐•œ n V s) (hW : ContDiffOn ๐•œ n W s) (hs : UniqueDiffOn ๐•œ s) (hmn : m + 1 โ‰ค n) :
      ContDiffOn ๐•œ m (VectorField.lieBracketWithin ๐•œ V W s) s
      theorem ContDiff.lieBracket_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {m n : WithTop โ„•โˆž} (hV : ContDiff ๐•œ n V) (hW : ContDiff ๐•œ n W) (hmn : m + 1 โ‰ค n) :
      ContDiff ๐•œ m (VectorField.lieBracket ๐•œ V W)
      theorem VectorField.lieBracketWithin_of_mem_nhdsWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (st : t โˆˆ nhdsWithin x s) (hs : UniqueDiffWithinAt ๐•œ s x) (hV : DifferentiableWithinAt ๐•œ V t x) (hW : DifferentiableWithinAt ๐•œ W t x) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracketWithin ๐•œ V W t x
      theorem VectorField.lieBracketWithin_subset {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (st : s โŠ† t) (ht : UniqueDiffWithinAt ๐•œ s x) (hV : DifferentiableWithinAt ๐•œ V t x) (hW : DifferentiableWithinAt ๐•œ W t x) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracketWithin ๐•œ V W t x
      theorem VectorField.lieBracketWithin_inter {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (ht : t โˆˆ nhds x) :
      theorem VectorField.lieBracketWithin_of_mem_nhds {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} (h : s โˆˆ nhds x) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracket ๐•œ V W x
      theorem VectorField.lieBracketWithin_of_isOpen {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} (hs : IsOpen s) (hx : x โˆˆ s) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracket ๐•œ V W x
      theorem VectorField.lieBracketWithin_eq_lieBracket {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s : Set E} {x : E} (hs : UniqueDiffWithinAt ๐•œ s x) (hV : DifferentiableAt ๐•œ V x) (hW : DifferentiableAt ๐•œ W x) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracket ๐•œ V W x
      theorem VectorField.lieBracketWithin_congr_set' {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (y : E) (h : s =แถ [nhdsWithin x {y}แถœ] t) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracketWithin ๐•œ V W t x

      Variant of lieBracketWithin_congr_set where one requires the sets to coincide only in the complement of a point.

      theorem VectorField.lieBracketWithin_congr_set {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (h : s =แถ [nhds x] t) :
      VectorField.lieBracketWithin ๐•œ V W s x = VectorField.lieBracketWithin ๐•œ V W t x
      theorem VectorField.lieBracketWithin_eventually_congr_set' {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (y : E) (h : s =แถ [nhdsWithin x {y}แถœ] t) :

      Variant of lieBracketWithin_eventually_congr_set where one requires the sets to coincide only in the complement of a point.

      theorem VectorField.lieBracketWithin_eventually_congr_set {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W : E โ†’ E} {s t : Set E} {x : E} (h : s =แถ [nhds x] t) :
      theorem DifferentiableWithinAt.lieBracketWithin_congr_mono {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s t : Set E} {x : E} (hV : DifferentiableWithinAt ๐•œ V s x) (hVs : Set.EqOn Vโ‚ V t) (hVx : Vโ‚ x = V x) (hW : DifferentiableWithinAt ๐•œ W s x) (hWs : Set.EqOn Wโ‚ W t) (hWx : Wโ‚ x = W x) (hxt : UniqueDiffWithinAt ๐•œ t x) (hโ‚ : t โŠ† s) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ t x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem Filter.EventuallyEq.lieBracketWithin_vectorField_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Vโ‚ =แถ [nhdsWithin x s] V) (hxV : Vโ‚ x = V x) (hW : Wโ‚ =แถ [nhdsWithin x s] W) (hxW : Wโ‚ x = W x) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem Filter.EventuallyEq.lieBracketWithin_vectorField_eq_of_mem {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Vโ‚ =แถ [nhdsWithin x s] V) (hW : Wโ‚ =แถ [nhdsWithin x s] W) (hx : x โˆˆ s) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem Filter.EventuallyEq.lieBracketWithin_vectorField' {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s t : Set E} {x : E} (hV : Vโ‚ =แถ [nhdsWithin x s] V) (hW : Wโ‚ =แถ [nhdsWithin x s] W) (ht : t โŠ† s) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ t =แถ [nhdsWithin x s] VectorField.lieBracketWithin ๐•œ V W t

      If vector fields coincide on a neighborhood of a point within a set, then the Lie brackets also coincide on a neighborhood of this point within this set. Version where one considers the Lie bracket within a subset.

      theorem Filter.EventuallyEq.lieBracketWithin_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Vโ‚ =แถ [nhdsWithin x s] V) (hW : Wโ‚ =แถ [nhdsWithin x s] W) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s =แถ [nhdsWithin x s] VectorField.lieBracketWithin ๐•œ V W s
      theorem Filter.EventuallyEq.lieBracketWithin_vectorField_eq_of_insert {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Vโ‚ =แถ [nhdsWithin x (insert x s)] V) (hW : Wโ‚ =แถ [nhdsWithin x (insert x s)] W) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem Filter.EventuallyEq.lieBracketWithin_vectorField_eq_nhds {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Vโ‚ =แถ [nhds x] V) (hW : Wโ‚ =แถ [nhds x] W) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem VectorField.lieBracketWithin_congr {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Set.EqOn Vโ‚ V s) (hVx : Vโ‚ x = V x) (hW : Set.EqOn Wโ‚ W s) (hWx : Wโ‚ x = W x) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x
      theorem VectorField.lieBracketWithin_congr' {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {s : Set E} {x : E} (hV : Set.EqOn Vโ‚ V s) (hW : Set.EqOn Wโ‚ W s) (hx : x โˆˆ s) :
      VectorField.lieBracketWithin ๐•œ Vโ‚ Wโ‚ s x = VectorField.lieBracketWithin ๐•œ V W s x

      Version of lieBracketWithin_congr in which one assumes that the point belongs to the given set.

      theorem Filter.EventuallyEq.lieBracket_vectorField_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {x : E} (hV : Vโ‚ =แถ [nhds x] V) (hW : Wโ‚ =แถ [nhds x] W) :
      VectorField.lieBracket ๐•œ Vโ‚ Wโ‚ x = VectorField.lieBracket ๐•œ V W x
      theorem Filter.EventuallyEq.lieBracket_vectorField {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {V W Vโ‚ Wโ‚ : E โ†’ E} {x : E} (hV : Vโ‚ =แถ [nhds x] V) (hW : Wโ‚ =แถ [nhds x] W) :
      VectorField.lieBracket ๐•œ Vโ‚ Wโ‚ =แถ [nhds x] VectorField.lieBracket ๐•œ V W
      theorem VectorField.leibniz_identity_lieBracketWithin_of_isSymmSndFDerivWithinAt {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {U V W : E โ†’ E} {s : Set E} {x : E} (hs : UniqueDiffOn ๐•œ s) (hx : x โˆˆ s) (hU : ContDiffWithinAt ๐•œ 2 U s x) (hV : ContDiffWithinAt ๐•œ 2 V s x) (hW : ContDiffWithinAt ๐•œ 2 W s x) (h'U : IsSymmSndFDerivWithinAt ๐•œ U s x) (h'V : IsSymmSndFDerivWithinAt ๐•œ V s x) (h'W : IsSymmSndFDerivWithinAt ๐•œ W s x) :

      The Lie bracket of vector fields in vector spaces satisfies the Leibniz identity [U, [V, W]] = [[U, V], W] + [V, [U, W]].

      theorem VectorField.leibniz_identity_lieBracketWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {n : WithTop โ„•โˆž} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (hn : minSmoothness ๐•œ 2 โ‰ค n) {U V W : E โ†’ E} {s : Set E} {x : E} (hs : UniqueDiffOn ๐•œ s) (h'x : x โˆˆ closure (interior s)) (hx : x โˆˆ s) (hU : ContDiffWithinAt ๐•œ n U s x) (hV : ContDiffWithinAt ๐•œ n V s x) (hW : ContDiffWithinAt ๐•œ n W s x) :

      The Lie bracket of vector fields in vector spaces satisfies the Leibniz identity [U, [V, W]] = [[U, V], W] + [V, [U, W]].

      theorem VectorField.leibniz_identity_lieBracket {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {n : WithTop โ„•โˆž} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (hn : minSmoothness ๐•œ 2 โ‰ค n) {U V W : E โ†’ E} {x : E} (hU : ContDiffAt ๐•œ n U x) (hV : ContDiffAt ๐•œ n V x) (hW : ContDiffAt ๐•œ n W x) :
      VectorField.lieBracket ๐•œ U (VectorField.lieBracket ๐•œ V W) x = VectorField.lieBracket ๐•œ (VectorField.lieBracket ๐•œ U V) W x + VectorField.lieBracket ๐•œ V (VectorField.lieBracket ๐•œ U W) x

      The Lie bracket of vector fields in vector spaces satisfies the Leibniz identity [U, [V, W]] = [[U, V], W] + [V, [U, W]].

      The pullback of vector fields in a vector space #

      def VectorField.pullback (๐•œ : Type u_1) [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : E โ†’ F) (V : F โ†’ F) (x : E) :
      E

      The pullback of a vector field under a function, defined as (f^* V) (x) = Df(x)^{-1} (V (f x)). If Df(x) is not invertible, we use the junk value 0.

      Equations
      Instances For
        def VectorField.pullbackWithin (๐•œ : Type u_1) [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : E โ†’ F) (V : F โ†’ F) (s : Set E) (x : E) :
        E

        The pullback within a set of a vector field under a function, defined as (f^* V) (x) = Df(x)^{-1} (V (f x)) where Df(x) is the derivative of f within s. If Df(x) is not invertible, we use the junk value 0.

        Equations
        Instances For
          theorem VectorField.pullbackWithin_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {V : F โ†’ F} {s : Set E} :
          VectorField.pullbackWithin ๐•œ f V s = fun (x : E) => (fderivWithin ๐•œ f s x).inverse (V (f x))
          theorem VectorField.pullback_eq_of_fderiv_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {M : E โ‰ƒL[๐•œ] F} {x : E} (hf : โ†‘M = fderiv ๐•œ f x) (V : F โ†’ F) :
          VectorField.pullback ๐•œ f V x = M.symm (V (f x))
          theorem VectorField.pullback_eq_of_not_isInvertible {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {x : E} (h : ยฌ(fderiv ๐•œ f x).IsInvertible) (V : F โ†’ F) :
          VectorField.pullback ๐•œ f V x = 0
          theorem VectorField.pullbackWithin_eq_of_not_isInvertible {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} {f : E โ†’ F} {x : E} (h : ยฌ(fderivWithin ๐•œ f s x).IsInvertible) (V : F โ†’ F) :
          VectorField.pullbackWithin ๐•œ f V s x = 0
          theorem VectorField.pullbackWithin_eq_of_fderivWithin_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} {f : E โ†’ F} {M : E โ‰ƒL[๐•œ] F} {x : E} (hf : โ†‘M = fderivWithin ๐•œ f s x) (V : F โ†’ F) :
          VectorField.pullbackWithin ๐•œ f V s x = M.symm (V (f x))
          @[simp]
          theorem VectorField.pullbackWithin_univ {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {V : F โ†’ F} :
          VectorField.pullbackWithin ๐•œ f V Set.univ = VectorField.pullback ๐•œ f V
          theorem VectorField.fderiv_pullback {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : E โ†’ F) (V : F โ†’ F) (x : E) (h'f : (fderiv ๐•œ f x).IsInvertible) :
          (fderiv ๐•œ f x) (VectorField.pullback ๐•œ f V x) = V (f x)
          theorem VectorField.fderivWithin_pullbackWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} {f : E โ†’ F} {V : F โ†’ F} {x : E} (h'f : (fderivWithin ๐•œ f s x).IsInvertible) :
          (fderivWithin ๐•œ f s x) (VectorField.pullbackWithin ๐•œ f V s x) = V (f x)
          theorem exists_continuousLinearEquiv_fderivWithin_symm_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace E] {f : E โ†’ F} {s : Set E} {x : E} (h'f : ContDiffWithinAt ๐•œ 2 f s x) (hf : (fderivWithin ๐•œ f s x).IsInvertible) (hs : UniqueDiffOn ๐•œ s) (hx : x โˆˆ s) :
          โˆƒ (N : E โ†’ E โ‰ƒL[๐•œ] F), ContDiffWithinAt ๐•œ 1 (fun (y : E) => โ†‘(N y)) s x โˆง ContDiffWithinAt ๐•œ 1 (fun (y : E) => โ†‘(N y).symm) s x โˆง (โˆ€แถ  (y : E) in nhdsWithin x s, โ†‘(N y) = fderivWithin ๐•œ f s y) โˆง โˆ€ (v : E), (fderivWithin ๐•œ (fun (y : E) => โ†‘(N y).symm) s x) v = -(โ†‘(N x).symm).comp (((fderivWithin ๐•œ (fderivWithin ๐•œ f s) s x) v).comp โ†‘(N x).symm)

          If a C^2 map has an invertible derivative within a set at a point, then nearby derivatives can be written as continuous linear equivs, which depend in a C^1 way on the point, as well as their inverse, and moreover one can compute the derivative of the inverse.

          theorem VectorField.DifferentiableWithinAt.pullbackWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace E] {f : E โ†’ F} {V : F โ†’ F} {s : Set E} {t : Set F} {x : E} (hV : DifferentiableWithinAt ๐•œ V t (f x)) (hf : ContDiffWithinAt ๐•œ 2 f s x) (hf' : (fderivWithin ๐•œ f s x).IsInvertible) (hs : UniqueDiffOn ๐•œ s) (hx : x โˆˆ s) (hst : Set.MapsTo f s t) :
          DifferentiableWithinAt ๐•œ (VectorField.pullbackWithin ๐•œ f V s) s x
          theorem exists_continuousLinearEquiv_fderiv_symm_eq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace E] {f : E โ†’ F} {x : E} (h'f : ContDiffAt ๐•œ 2 f x) (hf : (fderiv ๐•œ f x).IsInvertible) :
          โˆƒ (N : E โ†’ E โ‰ƒL[๐•œ] F), ContDiffAt ๐•œ 1 (fun (y : E) => โ†‘(N y)) x โˆง ContDiffAt ๐•œ 1 (fun (y : E) => โ†‘(N y).symm) x โˆง (โˆ€แถ  (y : E) in nhds x, โ†‘(N y) = fderiv ๐•œ f y) โˆง โˆ€ (v : E), (fderiv ๐•œ (fun (y : E) => โ†‘(N y).symm) x) v = -(โ†‘(N x).symm).comp (((fderiv ๐•œ (fderiv ๐•œ f) x) v).comp โ†‘(N x).symm)

          If a C^2 map has an invertible derivative at a point, then nearby derivatives can be written as continuous linear equivs, which depend in a C^1 way on the point, as well as their inverse, and moreover one can compute the derivative of the inverse.

          theorem VectorField.pullbackWithin_lieBracketWithin_of_isSymmSndFDerivWithinAt {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} [CompleteSpace E] {f : E โ†’ F} {V W : F โ†’ F} {x : E} {t : Set F} (hf : IsSymmSndFDerivWithinAt ๐•œ f s x) (h'f : ContDiffWithinAt ๐•œ 2 f s x) (hV : DifferentiableWithinAt ๐•œ V t (f x)) (hW : DifferentiableWithinAt ๐•œ W t (f x)) (hu : UniqueDiffOn ๐•œ s) (hx : x โˆˆ s) (hst : Set.MapsTo f s t) :

          The Lie bracket commutes with taking pullbacks. This requires the function to have symmetric second derivative. Version in a complete space. One could also give a version avoiding completeness but requiring that f is a local diffeo.

          theorem VectorField.pullbackWithin_lieBracketWithin_of_isSymmSndFDerivWithinAt_of_eventuallyEq {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} [CompleteSpace E] {f : E โ†’ F} {V W : F โ†’ F} {x : E} {t : Set F} {u : Set E} (hf : IsSymmSndFDerivWithinAt ๐•œ f s x) (h'f : ContDiffWithinAt ๐•œ 2 f s x) (hV : DifferentiableWithinAt ๐•œ V t (f x)) (hW : DifferentiableWithinAt ๐•œ W t (f x)) (hu : UniqueDiffOn ๐•œ u) (hx : x โˆˆ u) (hst : Set.MapsTo f u t) (hus : u =แถ [nhds x] s) :

          The Lie bracket commutes with taking pullbacks. This requires the function to have symmetric second derivative. Version in a complete space. One could also give a version avoiding completeness but requiring that f is a local diffeo. Variant where unique differentiability and the invariance property are only required in a smaller set u.

          theorem VectorField.pullback_lieBracket_of_isSymmSndFDerivAt {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace E] {f : E โ†’ F} {V W : F โ†’ F} {x : E} (hf : IsSymmSndFDerivAt ๐•œ f x) (h'f : ContDiffAt ๐•œ 2 f x) (hV : DifferentiableAt ๐•œ V (f x)) (hW : DifferentiableAt ๐•œ W (f x)) :
          VectorField.pullback ๐•œ f (VectorField.lieBracket ๐•œ V W) x = VectorField.lieBracket ๐•œ (VectorField.pullback ๐•œ f V) (VectorField.pullback ๐•œ f W) x

          The Lie bracket commutes with taking pullbacks. This requires the function to have symmetric second derivative. Version in a complete space. One could also give a version avoiding completeness but requiring that f is a local diffeo.

          theorem VectorField.pullbackWithin_lieBracketWithin {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {n : WithTop โ„•โˆž} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] {s : Set E} [CompleteSpace E] {f : E โ†’ F} {V W : F โ†’ F} {x : E} {t : Set F} (hn : minSmoothness ๐•œ 2 โ‰ค n) (h'f : ContDiffWithinAt ๐•œ n f s x) (hV : DifferentiableWithinAt ๐•œ V t (f x)) (hW : DifferentiableWithinAt ๐•œ W t (f x)) (hu : UniqueDiffOn ๐•œ s) (hx : x โˆˆ s) (h'x : x โˆˆ closure (interior s)) (hst : Set.MapsTo f s t) :

          The Lie bracket commutes with taking pullbacks. This requires the function to have symmetric second derivative. Version in a complete space. One could also give a version avoiding completeness but requiring that f is a local diffeo.

          theorem VectorField.pullback_lieBracket {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] {n : WithTop โ„•โˆž} {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {F : Type u_3} [NormedAddCommGroup F] [NormedSpace ๐•œ F] [CompleteSpace E] (hn : minSmoothness ๐•œ 2 โ‰ค n) {f : E โ†’ F} {V W : F โ†’ F} {x : E} (h'f : ContDiffAt ๐•œ n f x) (hV : DifferentiableAt ๐•œ V (f x)) (hW : DifferentiableAt ๐•œ W (f x)) :
          VectorField.pullback ๐•œ f (VectorField.lieBracket ๐•œ V W) x = VectorField.lieBracket ๐•œ (VectorField.pullback ๐•œ f V) (VectorField.pullback ๐•œ f W) x

          The Lie bracket commutes with taking pullbacks. One could also give a version avoiding completeness but requiring that f is a local diffeo.