noncomputable def
HypersurfacePatch.partialDeriv
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(i : Fin n)
:
Instances For
Instances For
Instances For
theorem
firstFundamentalForm_eq_conjTranspose_mul
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
:
theorem
firstFundamentalForm_posDef
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
(firstFundamentalForm patch x).PosDef
theorem
gaussNormal_unit
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
theorem
gaussNormal_orthogonal
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
(i : Fin n)
:
theorem
gaussNormal_orientation
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
Instances For
theorem
secondFundamentalForm_symmetric
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
(i j : Fin n)
:
Instances For
Instances For
Instances For
Instances For
Instances For
theorem
rigidity_theorem
{n : ℕ}
(patch₁ patch₂ : HypersurfacePatch n)
(hconn : IsConnected patch₁.domain)
(hdomain : patch₁.domain = patch₂.domain)
(hG : ∀ x ∈ patch₁.domain, firstFundamentalForm patch₁ x = firstFundamentalForm patch₂ x)
(hH : ∀ x ∈ patch₁.domain, secondFundamentalForm patch₁ x = secondFundamentalForm patch₂ x)
:
theorem
gaussNormal_coordinate_change
{n : ℕ}
(patch tildeP : HypersurfacePatch n)
(φ : (Fin n → ℝ) → Fin n → ℝ)
(x : Fin n → ℝ)
(h_eq : tildeP.f = patch.f ∘ φ)
(hφ : DifferentiableAt ℝ φ x)
(hf : DifferentiableAt ℝ patch.f (φ x))
(hdet_pos : (coordinateJacobian φ x).det > 0)
:
theorem
firstFundamentalForm_coordinate_change
{n : ℕ}
(patch tildeP : HypersurfacePatch n)
(φ : (Fin n → ℝ) → Fin n → ℝ)
(x : Fin n → ℝ)
(h_eq : tildeP.f = patch.f ∘ φ)
(hφ : DifferentiableAt ℝ φ x)
(hf : DifferentiableAt ℝ patch.f (φ x))
:
firstFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * firstFundamentalForm patch (φ x) * coordinateJacobian φ 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)
:
secondFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * secondFundamentalForm patch (φ x) * coordinateJacobian φ x
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)
:
secondFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * secondFundamentalForm patch (φ x) * coordinateJacobian φ x
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)
:
shapeOperator tildeP x = (coordinateJacobian φ x)⁻¹ * shapeOperator patch (φ x) * coordinateJacobian φ x
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)
:
gaussNormal tildeP x = gaussNormal patch (φ x) ∧ firstFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * firstFundamentalForm patch (φ x) * coordinateJacobian φ x ∧ secondFundamentalForm tildeP x = (coordinateJacobian φ x).transpose * secondFundamentalForm patch (φ x) * coordinateJacobian φ x ∧ shapeOperator tildeP x = (coordinateJacobian φ x)⁻¹ * shapeOperator patch (φ x) * coordinateJacobian φ x
theorem
firstFundamentalForm_eq_transpose_mul
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
:
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
orientationMatrix_transpose_mul_block
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
((orientationMatrix patch x (gaussNormal patch x)).transpose * orientationMatrix patch x (gaussNormal patch x)).submatrix
⇑finSumFinEquiv ⇑finSumFinEquiv = Matrix.fromBlocks (firstFundamentalForm patch x) 0 0 1
theorem
orientationMatrix_det_eq_sqrt_det_G
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
theorem
normalDerivMatrix_eq_mul
{n : ℕ}
(patch : HypersurfacePatch n)
(x : Fin n → ℝ)
(hx : x ∈ patch.domain)
:
normalDerivMatrix patch x = orientationMatrix patch x (gaussNormal patch x) * shapeOperatorLinkingMatrix patch x
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