Documentation

Atlas.DifferentialGeometry.code.Geodesics

def Geodesics.IsGeodesic {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) :
Instances For
    theorem Geodesics.deriv_mem_tangentSpace {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {ψ : EuclideanSpace (Fin (n + 1))} (hsmooth : ContDiff γ) (hM : ∀ (t : ), γ t M) {t : } ( : Hypersurface.IsLocalDefiningFunction ψ M (γ t)) :
    theorem Geodesics.geodesic_constant_speed {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hHyp : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) ( : IsGeodesic M hHyp γ) :
    ∃ (c : ), ∀ (t : ), deriv γ t = c
    noncomputable def Geodesics.energy {n : } (γ : EuclideanSpace (Fin (n + 1))) (a b : ) :
    Instances For
      structure Geodesics.SmoothVariation {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) :
      Instances For
        noncomputable def Geodesics.firstVariationEnergy {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {a b : } (V : SmoothVariation M γ a b) :
        Instances For
          noncomputable def Geodesics.variationField {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {a b : } (V : SmoothVariation M γ a b) (t : ) :
          Instances For
            theorem Geodesics.variationField_mem_tangentSpace {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {a b : } (V : SmoothVariation M γ a b) {ψ : EuclideanSpace (Fin (n + 1))} {t : } ( : Hypersurface.IsLocalDefiningFunction ψ M (γ t)) :
            theorem Geodesics.first_variation_formula {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {a b : } (V : SmoothVariation M γ a b) (hγ_smooth : ContDiff γ) :
            theorem Geodesics.critical_energy_implies_geodesic {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) (hγ_smooth : ContDiff γ) (hγ_in : ∀ (t : ), γ t M) (hcrit : ∀ (V : SmoothVariation M γ a b), firstVariationEnergy V = 0) :
            IsGeodesic M hM γ
            theorem Geodesics.geodesic_iff_critical_energy {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) (hγ_smooth : ContDiff γ) (hγ_in : ∀ (t : ), γ t M) :
            IsGeodesic M hM γ ∀ (V : SmoothVariation M γ a b), firstVariationEnergy V = 0
            def Geodesics.IsEnergyMinimizer {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) :
            Instances For
              theorem Geodesics.energy_differentiableAt_variation {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {γ : EuclideanSpace (Fin (n + 1))} {a b : } (V : SmoothVariation M γ a b) :
              DifferentiableAt (fun (s : ) => energy (V.Γ s) a b) 0
              theorem Geodesics.geodesic_of_energy_minimizer {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) (hγ_smooth : ContDiff γ) (hγ_in : ∀ (t : ), γ t M) (hmin : IsEnergyMinimizer M γ a b) :
              IsGeodesic M hM γ
              def Geodesics.IsGeodesicOn {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ : EuclideanSpace (Fin (n + 1))) (I : Set ) :
              Instances For
                theorem Geodesics.geodesic_local_agreement {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {hM : Hypersurface.IsHypersurface M} {γ γ' : EuclideanSpace (Fin (n + 1))} ( : IsGeodesic M hM γ) (hγ' : IsGeodesic M hM γ') (t₀ : ) (h_pos : γ t₀ = γ' t₀) (h_vel : deriv γ t₀ = deriv γ' t₀) :
                ∀ᶠ (t : ) in nhds t₀, γ t = γ' t deriv γ t = deriv γ' t
                theorem Geodesics.geodesic_uniqueness {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ γ' : EuclideanSpace (Fin (n + 1))) ( : IsGeodesic M hM γ) (hγ' : IsGeodesic M hM γ') (h_pos : γ 0 = γ' 0) (h_vel : deriv γ 0 = deriv γ' 0) (t : ) :
                γ t = γ' t
                theorem Geodesics.geodesic_existence {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (y : EuclideanSpace (Fin (n + 1))) (hy : y M) (ψ : EuclideanSpace (Fin (n + 1))) ( : Hypersurface.IsLocalDefiningFunction ψ M y) (Y : EuclideanSpace (Fin (n + 1))) (hY : Y Hypersurface.tangentSpace ψ y) :
                ∃ (γ : EuclideanSpace (Fin (n + 1))), IsGeodesic M hM γ γ 0 = y deriv γ 0 = Y
                theorem Geodesics.path_length_eq_distance_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] [StrictConvexSpace E] (γ : E) (a b : ) (hab : a < b) ( : ContDiff γ) :
                (t : ) in a..b, deriv γ t = γ b - γ a tSet.Icc a b, ∃ (c : ), 0 c deriv γ t = c (γ b - γ a)
                Instances For
                  theorem Geodesics.patch_partialDeriv_mem_tangentSpace {n : } (patch : HypersurfacePatch n) (M : Set (EuclideanSpace (Fin (n + 1)))) (hpatch_in_M : xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M) (x : Fin n) (hx : x patch.domain) (ψ : EuclideanSpace (Fin (n + 1))) ( : Hypersurface.IsLocalDefiningFunction ψ M ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x))) (s : Fin n) :
                  (WithLp.equiv 2 (Fin (n + 1))).symm (patch.partialDeriv x s) Hypersurface.tangentSpace ψ ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x))
                  theorem Geodesics.metric_christoffel_identity {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i j s : Fin n) :
                  theorem Geodesics.second_deriv_inner_product_eq {n : } (patch : HypersurfacePatch n) (c : Fin n) (hc_smooth : ContDiff c) (hc_domain : ∀ (t : ), c t patch.domain) (t : ) (s : Fin n) :
                  inner (deriv (deriv fun (t : ) => (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t))) t) ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.partialDeriv (c t) s)) = i : Fin n, j : Fin n, ChristoffelSymbols.secondPartialDeriv patch (c t) i j ⬝ᵥ patch.partialDeriv (c t) s * deriv c t i * deriv c t j + k : Fin n, patch.partialDeriv (c t) k ⬝ᵥ patch.partialDeriv (c t) s * deriv (deriv c) t k
                  theorem Geodesics.geodesic_inner_product_formula {n : } (patch : HypersurfacePatch n) (c : Fin n) (hc_smooth : ContDiff c) (hc_domain : ∀ (t : ), c t patch.domain) (t : ) (s : Fin n) :
                  inner (deriv (deriv fun (t : ) => (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t))) t) ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.partialDeriv (c t) s)) = k : Fin n, firstFundamentalForm patch (c t) s k * (deriv (deriv c) t k + i : Fin n, j : Fin n, ChristoffelSymbols.christoffelSymbol patch (c t) i j k * deriv c t i * deriv c t j)
                  theorem Geodesics.patch_comp_smooth {n : } (patch : HypersurfacePatch n) (c : Fin n) (hc_smooth : ContDiff c) (hc_domain : ∀ (t : ), c t patch.domain) :
                  ContDiff fun (t : ) => (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t))
                  theorem Geodesics.tangentSpace_mem_span_partialDerivs {n : } (patch : HypersurfacePatch n) (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (hpatch_in_M : xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M) (x : Fin n) (hx : x patch.domain) (ψ : EuclideanSpace (Fin (n + 1))) ( : Hypersurface.IsLocalDefiningFunction ψ M ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x))) (v : EuclideanSpace (Fin (n + 1))) (hv : v Hypersurface.tangentSpace ψ ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x))) :
                  ∃ (a : Fin n), v = s : Fin n, a s (WithLp.equiv 2 (Fin (n + 1))).symm (patch.partialDeriv x s)
                  theorem Geodesics.geodesic_ortho_from_ode {n : } (patch : HypersurfacePatch n) (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (c : Fin n) (hc_smooth : ContDiff c) (hc_domain : ∀ (t : ), c t patch.domain) (hpatch_in_M : xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M) (hode : ∀ (t : ) (k : Fin n), deriv (deriv c) t k + i : Fin n, j : Fin n, ChristoffelSymbols.christoffelSymbol patch (c t) i j k * deriv c t i * deriv c t j = 0) (t : ) (ψ : EuclideanSpace (Fin (n + 1))) ( : Hypersurface.IsLocalDefiningFunction ψ M ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t)))) (v : EuclideanSpace (Fin (n + 1))) (hv : v Hypersurface.tangentSpace ψ ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t)))) :
                  inner (deriv (deriv fun (t : ) => (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t))) t) v = 0
                  theorem Geodesics.geodesic_equation_coordinates {n : } (patch : HypersurfacePatch n) (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (c : Fin n) (hc_smooth : ContDiff c) (hc_domain : ∀ (t : ), c t patch.domain) (hpatch_in_M : xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M) :
                  (IsGeodesic M hM fun (t : ) => (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f (c t))) SatisfiesGeodesicEquation patch c
                  structure Geodesics.SmoothPathIn {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (p q : EuclideanSpace (Fin (n + 1))) :
                  Instances For
                    noncomputable def Geodesics.pathLength {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                    Instances For
                      def Geodesics.reversePath {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                      Instances For
                        noncomputable def Geodesics.geodesicDist {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (p q : EuclideanSpace (Fin (n + 1))) :
                        Instances For
                          def Geodesics.IsSmoothOnHypersurface {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] (M : Set E) (f : M) :
                          Instances For
                            Instances For
                              Instances For
                                theorem Geodesics.smooth_concat_exists_path {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) {p q r : EuclideanSpace (Fin (n + 1))} (α : SmoothPathIn M p q) (β : SmoothPathIn M q r) :
                                ∃ (δ : SmoothPathIn M p r), pathLength δ pathLength α + pathLength β
                                theorem Geodesics.geodesicDist_comm {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (p q : EuclideanSpace (Fin (n + 1))) :
                                theorem Geodesics.geodesicDist_eq_zero_iff {n : } (M : ConnectedHypersurfaceWithPaths n) (p q : EuclideanSpace (Fin (n + 1))) (hp : p M.carrier) (hq : q M.carrier) (heq : geodesicDist M.carrier p q = 0) :
                                p = q
                                theorem Geodesics.cauchy_schwarz_integral (f : ) (hf : Continuous f) (a b : ) (hab : a < b) :
                                (t : ) in a..b, f t (b - a) * ( (t : ) in a..b, f t ^ 2) ( (t : ) in a..b, f t = (b - a) * ( (t : ) in a..b, f t ^ 2) ∃ (c : ), tSet.Icc a b, f t = c)
                                theorem Geodesics.cauchy_schwarz_integral_eq_iff (f : ) (hf : Continuous f) (hf_nn : ∀ (t : ), 0 f t) (a b : ) (hab : a < b) :
                                (t : ) in a..b, f t = (b - a) * ( (t : ) in a..b, f t ^ 2) ∃ (c : ), tSet.Icc a b, f t = c
                                noncomputable def Geodesics.lengthAB {n : } (γ : EuclideanSpace (Fin (n + 1))) (a b : ) :
                                Instances For
                                  theorem Geodesics.energy_ge_length_sq_div {n : } (γ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) ( : ContDiff γ) :
                                  energy γ a b lengthAB γ a b ^ 2 / (b - a) (energy γ a b = lengthAB γ a b ^ 2 / (b - a) ∃ (c : ), tSet.Icc a b, deriv γ t = c)
                                  noncomputable def Geodesics.pathEnergy {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                                  Instances For
                                    def Geodesics.IsConstantSpeed {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                                    Instances For
                                      def Geodesics.IsAbsoluteLengthMinimizer {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                                      Instances For
                                        def Geodesics.IsAbsoluteEnergyMinimizer {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                                        Instances For
                                          theorem Geodesics.energy_ge_length_sq {n : } {M : Set (EuclideanSpace (Fin (n + 1)))} {p q : EuclideanSpace (Fin (n + 1))} (γ : SmoothPathIn M p q) :
                                          def Geodesics.IsMetricGeodesic {X : Type u_1} [MetricSpace X] (γ : X) (a b : ) :
                                          Instances For
                                            def Geodesics.IsGlobalMetricGeodesic {X : Type u_1} [MetricSpace X] (γ : X) :
                                            Instances For
                                              Instances For
                                                theorem Geodesics.gauss_map_injective_of_positive_curvature {n : } (M : CompactPositiveGaussCurvature n) (hn : 2 n) (ν : EuclideanSpace (Fin (n + 1))EuclideanSpace (Fin (n + 1))) (hν_maps : yM.carrier, ν y GaussMap.unitSphere n) (hν_smooth : ContDiffOn ν M.carrier) (hν_gauss_map : ∀ (patch : HypersurfacePatch n), xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M.carrierν ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x)) = (WithLp.equiv 2 (Fin (n + 1))).symm (gaussNormal patch x)) (y : EuclideanSpace (Fin (n + 1))) :
                                                y M.carrier∀ (ψ : EuclideanSpace (Fin (n + 1))), Hypersurface.IsLocalDefiningFunction ψ M.carrier yvHypersurface.tangentSpace ψ y, (fderiv ν y) v = 0v = 0
                                                theorem Geodesics.convex_of_bijective_gauss_map {n : } (M : CompactPositiveGaussCurvature n) (hn : 2 n) (ν : EuclideanSpace (Fin (n + 1))EuclideanSpace (Fin (n + 1))) (hν_maps : yM.carrier, ν y GaussMap.unitSphere n) (hν_bij : Function.Bijective fun (y : M.carrier) => ν y, ) :
                                                theorem Geodesics.hadamard_convexity {n : } (M : CompactPositiveGaussCurvature n) (hn : 2 n) (ν : EuclideanSpace (Fin (n + 1))EuclideanSpace (Fin (n + 1))) (hν_maps : yM.carrier, ν y GaussMap.unitSphere n) (hν_smooth : ContDiffOn ν M.carrier) (hν_gauss_map : ∀ (patch : HypersurfacePatch n), xpatch.domain, (WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x) M.carrierν ((WithLp.equiv 2 (Fin (n + 1))).symm (patch.f x)) = (WithLp.equiv 2 (Fin (n + 1))).symm (gaussNormal patch x)) :
                                                def Geodesics.IsMinimizingGeodesic {n : } (M : ConnectedHypersurface n) (p q : EuclideanSpace (Fin (n + 1))) (γ : EuclideanSpace (Fin (n + 1))) (a b : ) :
                                                Instances For
                                                  theorem Geodesics.hopf_rinow_minimizing_geodesic {n : } (M : ConnectedHypersurface n) (hM : IsClosed M.carrier) (p q : EuclideanSpace (Fin (n + 1))) (hp : p M.carrier) (hq : q M.carrier) (a b : ) (hab : a < b) :
                                                  ∃ (γ : EuclideanSpace (Fin (n + 1))), IsMinimizingGeodesic M p q γ a b
                                                  Instances For
                                                    Instances For
                                                      Instances
                                                        theorem Geodesics.busemann_unique_geodesic {X : Type u_1} [MetricSpace X] [IsBusemannSpace X] (p q : X) :
                                                        (∃ (γ : X), IsMetricGeodesic γ 0 (dist p q) γ 0 = p γ (dist p q) = q) ∀ (γ₁ γ₂ : X), IsMetricGeodesic γ₁ 0 (dist p q)γ₁ 0 = pγ₁ (dist p q) = qIsMetricGeodesic γ₂ 0 (dist p q)γ₂ 0 = pγ₂ (dist p q) = qtSet.Icc 0 (dist p q), γ₁ t = γ₂ t
                                                        theorem Geodesics.cauchy_schwarz_energy_length {n : } (σ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) ( : ContDiff σ) :
                                                        ( (t : ) in a..b, deriv σ t) ^ 2 (b - a) * (t : ) in a..b, deriv σ t ^ 2
                                                        theorem Geodesics.geodesic_locally_minimizes_length {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ σ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) (hγ_geo : IsGeodesic M hM γ) (hγ_unit : ∀ (t : ), deriv γ t = 1) ( : ContDiff σ) (hσ_in : ∀ (t : ), σ t M) (hendpoints : σ a = γ a σ b = γ b) :
                                                        (t : ) in a..b, deriv σ t b - a
                                                        theorem Geodesics.geodesic_arclength_minimizes_energy_locally {n : } (M : Set (EuclideanSpace (Fin (n + 1)))) (hM : Hypersurface.IsHypersurface M) (γ σ : EuclideanSpace (Fin (n + 1))) (a b : ) (hab : a < b) (hγ_geo : IsGeodesic M hM γ) (hγ_unit : ∀ (t : ), deriv γ t = 1) ( : ContDiff σ) (hσ_in : ∀ (t : ), σ t M) (hendpoints : σ a = γ a σ b = γ b) :
                                                        energy σ a b energy γ a b