Documentation

SphereEversion.Local.DualPair

Dual pairs #

Convex integration improves maps by successively modify their derivative in a direction of a vector field (almost) without changing their derivative along some complementary hyperplace.

In this file we introduce the linear algebra part of the story of such modifications. The main gadget here are dual pairs on a real topological vector space E. Each p : DualPair E is made of a (continuous) linear form p.π : E →L[ℝ] ℝ and a vector p.v : E such that p.π p.v = 1.

Those pairs are used to build the updating operation turning φ : E →L[ℝ] F into p.update φ w which equals φ on ker p.π and sends v to the given w : F.

After formalizing the above definitions, we first record a number of trivial algebraic lemmas. Then we prove a lemma which is geometrically obvious but not so easy to formalize: injective_update_iff states, starting with an injective φ, that the updated map p.update φ w is injective if and only if w isn't in the image of ker p.π under φ. This is crucial in order to apply convex integration to immersions.

Then we prove continuity and smoothness lemmas for this operation.

General theory #

structure DualPair (E : Type u_1) [AddCommGroup E] [Module E] [TopologicalSpace E] :
Type u_1

A continuous linear form π and a vector v that pair to one. In particular ker π is a hyperplane and v spans a complement of this hyperplane.

Instances For

    Given a dual pair p, p.span_v is the line spanned by p.v.

    Equations
    Instances For
      theorem DualPair.mem_spanV {E : Type u_1} [AddCommGroup E] [Module E] [TopologicalSpace E] (p : DualPair E) {u : E} :
      u p.spanV ∃ (t : ), u = t p.v
      def DualPair.update {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) (w : F) :

      Update a continuous linear map φ : E →L[ℝ] F using a dual pair p on E and a vector w : F. The new map coincides with φ on ker p.π and sends p.v to w.

      Equations
      Instances For
        @[simp]
        theorem DualPair.update_ker_pi {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) (w : F) {u : E} (hu : u LinearMap.ker p.π) :
        (p.update φ w) u = φ u
        @[simp]
        theorem DualPair.update_v {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) (w : F) :
        (p.update φ w) p.v = w
        @[simp]
        theorem DualPair.update_self {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) :
        p.update φ (φ p.v) = φ
        @[simp]
        theorem DualPair.update_update {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) (w w' : F) :
        p.update (p.update φ w') w = p.update φ w
        theorem DualPair.decomp {E : Type u_1} [AddCommGroup E] [Module E] [TopologicalSpace E] (p : DualPair E) (e : E) :
        uLinearMap.ker p.π, ∃ (t : ), e = u + t p.v
        theorem DualPair.update_apply {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (φ : E →L[] F) {w : F} {t : } {u : E} (hu : u LinearMap.ker p.π) :
        (p.update φ w) (u + t p.v) = φ u + t w
        def DualPair.map {E : Type u_1} {E' : Type u_2} [AddCommGroup E] [Module E] [TopologicalSpace E] [AddCommGroup E'] [Module E'] [TopologicalSpace E'] (p : DualPair E) (L : E ≃L[] E') :

        Map a dual pair under a linear equivalence.

        Equations
        Instances For
          @[simp]
          theorem DualPair.map_π {E : Type u_1} {E' : Type u_2} [AddCommGroup E] [Module E] [TopologicalSpace E] [AddCommGroup E'] [Module E'] [TopologicalSpace E'] (p : DualPair E) (L : E ≃L[] E') :
          (p.map L).π = p.π.comp L.symm
          @[simp]
          theorem DualPair.map_v {E : Type u_1} {E' : Type u_2} [AddCommGroup E] [Module E] [TopologicalSpace E] [AddCommGroup E'] [Module E'] [TopologicalSpace E'] (p : DualPair E) (L : E ≃L[] E') :
          (p.map L).v = L p.v
          theorem DualPair.update_comp_left {E : Type u_1} {F : Type u_3} {G : Type u_4} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] [NormedAddCommGroup G] [NormedSpace G] (p : DualPair E) (ψ' : F →L[] G) (φ : E →L[] F) (w : F) :
          p.update (ψ'.comp φ) (ψ' w) = ψ'.comp (p.update φ w)
          theorem DualPair.map_update_comp_right {E : Type u_1} {E' : Type u_2} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [AddCommGroup E'] [Module E'] [TopologicalSpace E'] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) (ψ' : E →L[] F) (φ : E ≃L[] E') (w : F) :
          (p.map φ).update (ψ'.comp φ.symm) w = (p.update ψ' w).comp φ.symm

          Injectivity criterion #

          @[simp]
          theorem DualPair.injective_update_iff {E : Type u_1} {F : Type u_3} [AddCommGroup E] [Module E] [TopologicalSpace E] [NormedAddCommGroup F] [NormedSpace F] (p : DualPair E) {φ : E →L[] F} ( : Function.Injective φ) {w : F} :

          Smoothness and continuity #

          theorem DualPair.smooth_update {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional E] (p : DualPair E) {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] {φ : GE →L[] F} ( : 𝒞 (↑) φ) {w : GF} (hw : 𝒞 (↑) w) :
          𝒞 fun (g : G) => p.update (φ g) (w g)
          theorem DualPair.continuous_update {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {F : Type u_2} [NormedAddCommGroup F] [NormedSpace F] [FiniteDimensional E] (p : DualPair E) {X : Type u_3} [TopologicalSpace X] {φ : XE →L[] F} ( : Continuous φ) {w : XF} (hw : Continuous w) :
          Continuous fun (g : X) => p.update (φ g) (w g)
          def Basis.dualPair {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [FiniteDimensional E] {ι : Type u_3} [Fintype ι] [DecidableEq ι] (e : Basis ι E) (i : ι) :

          Given a finite basis e : basis ι ℝ E, and i : ι, e.DualPair i is given by the ith basis element and its dual.

          Equations
          Instances For