Documentation

Atlas.DifferentialGeometry.code.Hypersurfaces

structure HypersurfacePatch (n : ) :
Instances For
    noncomputable def HypersurfacePatch.partialDeriv {n : } (patch : HypersurfacePatch n) (x : Fin n) (i : Fin n) :
    Fin (n + 1)
    Instances For
      def generalizedCross {n : } (v : Fin nFin (n + 1)) :
      Fin (n + 1)
      Instances For
        noncomputable def orientationMatrix {n : } (patch : HypersurfacePatch n) (x : Fin n) (w : Fin (n + 1)) :
        Matrix (Fin (n + 1)) (Fin (n + 1))
        Instances For
          noncomputable def gaussNormal {n : } (patch : HypersurfacePatch n) (x : Fin n) :
          Fin (n + 1)
          Instances For
            noncomputable def firstFundamentalForm {n : } (patch : HypersurfacePatch n) (x : Fin n) :
            Matrix (Fin n) (Fin n)
            Instances For
              noncomputable def jacobianMatrix {n : } (patch : HypersurfacePatch n) (x : Fin n) :
              Matrix (Fin (n + 1)) (Fin n)
              Instances For
                theorem jacobian_mulVec_eq_fderiv {n : } (patch : HypersurfacePatch n) (x v : Fin n) :
                (jacobianMatrix patch x).mulVec v = (fderiv patch.f x) v
                theorem firstFundamentalForm_posDef {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                theorem gaussNormal_unit {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                (gaussNormal patch x ⬝ᵥ gaussNormal patch x) = 1
                theorem gaussNormal_orthogonal {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i : Fin n) :
                gaussNormal patch x ⬝ᵥ patch.partialDeriv x i = 0
                theorem gaussNormal_orientation {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                (orientationMatrix patch x (gaussNormal patch x)).det > 0
                noncomputable def secondFundamentalForm {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                Matrix (Fin n) (Fin n)
                Instances For
                  theorem secondFundamentalForm_symmetric {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i j : Fin n) :
                  noncomputable def shapeOperator {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                  Matrix (Fin n) (Fin n)
                  Instances For
                    def IsPrincipalCurvature {n : } (patch : HypersurfacePatch n) (x : Fin n) (κ : ) :
                    Instances For
                      theorem dotProduct_sum_smul {m k : } (v : Fin kFin m) (a : Fin k) (w : Fin m) :
                      (∑ j : Fin k, a j v j) ⬝ᵥ w = j : Fin k, a j * v j ⬝ᵥ w
                      theorem gaussNormal_deriv_in_tangent {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i : Fin n) :
                      ∃ (a : Fin n), (fderiv (gaussNormal patch) x) (Pi.single i 1) = j : Fin n, a j (fderiv patch.f x) (Pi.single j 1)
                      theorem gaussNormal_deriv_dot_partial {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i j : Fin n) :
                      (fderiv (gaussNormal patch) x) (Pi.single i 1) ⬝ᵥ (fderiv patch.f x) (Pi.single j 1) = -secondFundamentalForm patch x i j
                      theorem gauss_normal_derivative {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (i : Fin n) :
                      (fderiv (gaussNormal patch) x) (Pi.single i 1) = -j : Fin n, shapeOperator patch x j i (fderiv patch.f x) (Pi.single j 1)
                      noncomputable def meanCurvature {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                      Instances For
                        noncomputable def gaussCurvature {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                        Instances For
                          noncomputable def scalarCurvature {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                          Instances For
                            theorem rigidity_theorem {n : } (patch₁ patch₂ : HypersurfacePatch n) (hconn : IsConnected patch₁.domain) (hdomain : patch₁.domain = patch₂.domain) (hG : xpatch₁.domain, firstFundamentalForm patch₁ x = firstFundamentalForm patch₂ x) (hH : xpatch₁.domain, secondFundamentalForm patch₁ x = secondFundamentalForm patch₂ x) :
                            ∃ (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ) (b : Fin (n + 1)), A Matrix.orthogonalGroup (Fin (n + 1)) A.det = 1 xpatch₁.domain, patch₂.f x = A.mulVec (patch₁.f x) + b
                            noncomputable def coordinateJacobian {n : } (φ : (Fin n)Fin n) (x : Fin n) :
                            Matrix (Fin n) (Fin n)
                            Instances For
                              theorem generalizedCross_linear_combination {n : } (v : Fin nFin (n + 1)) (A : Matrix (Fin n) (Fin n) ) :
                              (generalizedCross fun (i : Fin n) => j : Fin n, A j i v j) = A.det generalizedCross v
                              theorem gaussNormal_coordinate_change {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_eq : tildeP.f = patch.f φ) ( : DifferentiableAt φ x) (hf : DifferentiableAt patch.f (φ x)) (hdet_pos : (coordinateJacobian φ x).det > 0) :
                              gaussNormal tildeP x = gaussNormal patch (φ x)
                              theorem firstFundamentalForm_coordinate_change {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_eq : tildeP.f = patch.f φ) ( : DifferentiableAt φ x) (hf : DifferentiableAt patch.f (φ x)) :
                              theorem secondFundamentalForm_coordinate_change_of_entries {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_chain : ∀ (i j : Fin n), secondFundamentalForm tildeP x i j = k : Fin n, l : Fin n, coordinateJacobian φ x k i * secondFundamentalForm patch (φ x) k l * coordinateJacobian φ x l j) :
                              theorem secondFundamentalForm_entry_formula {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_eq : tildeP.f = patch.f φ) (hφ_smooth : ContDiffAt φ x) (hf_smooth : ContDiffAt patch.f (φ x)) (hx : x tildeP.domain) (hφx : φ x patch.domain) (hdet_pos : (coordinateJacobian φ x).det > 0) (i j : Fin n) :
                              secondFundamentalForm tildeP x i j = k : Fin n, l : Fin n, coordinateJacobian φ x k i * secondFundamentalForm patch (φ x) k l * coordinateJacobian φ x l j
                              theorem secondFundamentalForm_coordinate_change {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_eq : tildeP.f = patch.f φ) (hφ_smooth : ContDiffAt φ x) (hf_smooth : ContDiffAt patch.f (φ x)) (hx : x tildeP.domain) (hφx : φ x patch.domain) (hdet_pos : (coordinateJacobian φ x).det > 0) :
                              theorem shapeOperator_coordinate_change {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (hG : firstFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * firstFundamentalForm patch (φ x) * coordinateJacobian φ x) (hH : secondFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * secondFundamentalForm patch (φ x) * coordinateJacobian φ x) (hφ_det : IsUnit (coordinateJacobian φ x).det) (hG_det : IsUnit (firstFundamentalForm patch (φ x)).det) :
                              theorem prop_13_1 {n : } (patch tildeP : HypersurfacePatch n) (φ : (Fin n)Fin n) (x : Fin n) (h_eq : tildeP.f = patch.f φ) (hφ_smooth : ContDiffAt φ x) (hf_smooth : ContDiffAt patch.f (φ x)) (hx : x tildeP.domain) (hφx : φ x patch.domain) (hdet_pos : (coordinateJacobian φ x).det > 0) (hG_det : IsUnit (firstFundamentalForm patch (φ x)).det) :
                              noncomputable def normalDerivMatrix {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                              Matrix (Fin (n + 1)) (Fin (n + 1))
                              Instances For
                                theorem shape_operator_parametrization_identification {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) (X : Fin n) :
                                (jacobianMatrix patch x).mulVec ((shapeOperator patch x).mulVec X) = -(fderiv (gaussNormal patch) x) X
                                theorem firstFundamentalForm_eq_transpose_mul_and_shapeOperator_intertwine {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                                firstFundamentalForm patch x = (jacobianMatrix patch x).transpose * jacobianMatrix patch x ∀ (X : Fin n), (jacobianMatrix patch x).mulVec ((shapeOperator patch x).mulVec X) = -(fderiv (gaussNormal patch) x) X
                                theorem dotProduct_self_eq_one_of_sqrt_eq_one {n : } (ν : Fin (n + 1)) (h : (ν ⬝ᵥ ν) = 1) :
                                ν ⬝ᵥ ν = 1
                                theorem orientationMatrix_det_eq_sqrt_det_G {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                                noncomputable def shapeOperatorLinkingMatrix {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                                Matrix (Fin (n + 1)) (Fin (n + 1))
                                Instances For
                                  theorem shapeOperatorLinkingMatrix_det {n : } (patch : HypersurfacePatch n) (x : Fin n) :
                                  (shapeOperatorLinkingMatrix patch x).det = (-1) ^ n * (shapeOperator patch x).det
                                  theorem normalDerivMatrix_eq_mul {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                                  theorem gaussCurvature_normal_formula {n : } (patch : HypersurfacePatch n) (x : Fin n) (hx : x patch.domain) :
                                  gaussCurvature patch x = (-1) ^ n * (normalDerivMatrix patch x).det / (firstFundamentalForm patch x).det
                                  Instances For