Documentation

Atlas.DifferentialGeometry.code.PlaneCurves

Instances For
    Instances For
      noncomputable def PlaneCurves.curvature (c : EuclideanSpace (Fin 2)) (t : ) :
      Instances For
        noncomputable def PlaneCurves.J (v : EuclideanSpace (Fin 2)) :
        Instances For
          @[simp]
          @[simp]
          theorem PlaneCurves.J_apply_one (v : EuclideanSpace (Fin 2)) :
          (J v).ofLp 1 = v.ofLp 0
          theorem PlaneCurves.inner_eq_coord (v w : EuclideanSpace (Fin 2)) :
          inner v w = v.ofLp 0 * w.ofLp 0 + v.ofLp 1 * w.ofLp 1
          theorem PlaneCurves.deriv_eq_det2_smul_J_of_norm_eq_one (f : EuclideanSpace (Fin 2)) (hf : ContDiff f) (hunit : ∀ (t : ), f t = 1) (t : ) :
          deriv f t = det2 (f t) (deriv f t) J (f t)
          theorem PlaneCurves.J_smul (a : ) (v : EuclideanSpace (Fin 2)) :
          J (a v) = a J v
          theorem PlaneCurves.det2_smul_left (a : ) (v w : EuclideanSpace (Fin 2)) :
          det2 (a v) w = a * det2 v w
          theorem PlaneCurves.det2_add_right (v w₁ w₂ : EuclideanSpace (Fin 2)) :
          det2 v (w₁ + w₂) = det2 v w₁ + det2 v w₂
          theorem PlaneCurves.det2_smul_right (a : ) (v w : EuclideanSpace (Fin 2)) :
          det2 v (a w) = a * det2 v w
          theorem PlaneCurves.frenet_equation (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (t : ) :
          deriv (fun (s : ) => deriv c s⁻¹ deriv c s) t = curvature c t J (deriv c t)
          theorem PlaneCurves.J_J (v : EuclideanSpace (Fin 2)) :
          J (J v) = -v
          theorem PlaneCurves.J_add (v w : EuclideanSpace (Fin 2)) :
          J (v + w) = J v + J w
          theorem PlaneCurves.J_hasDerivAt (f : EuclideanSpace (Fin 2)) (f' : EuclideanSpace (Fin 2)) (t : ) (hf : HasDerivAt f f' t) :
          HasDerivAt (fun (s : ) => J (f s)) (J f') t
          theorem PlaneCurves.constant_curvature_is_circle (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (R : ) (hR : R 0) ( : ∀ (t : ), curvature c t = R⁻¹) :
          ∃ (center : EuclideanSpace (Fin 2)), ∀ (t : ), c t - center = |R|
          @[reducible, inline]
          Instances For
            noncomputable def PlaneCurves.hessianVec (F : R2) (x v : R2) :
            Instances For
              theorem PlaneCurves.orthog_proportional_J (v w : EuclideanSpace (Fin 2)) (hv : v 0) (horthog : inner v w = 0) :
              w = (det2 v w / v ^ 2) J v
              theorem PlaneCurves.level_set_orthogonality (F : R2) (c : R2) (a : ) (hF : ContDiff F) (hc : ContDiff c) (hlevel : ∀ (t : ), F (c t) = a) (t : ) :
              (fderiv F (c t)) (deriv c t) = 0
              theorem PlaneCurves.level_set_gradient_orthogonality (F : R2) (c : R2) (a : ) (hF : ContDiff F) (hc : ContDiff c) (hlevel : ∀ (t : ), F (c t) = a) (t : ) :
              inner (gradient F (c t)) (deriv c t) = 0
              theorem PlaneCurves.second_diff_level_set (F : R2) (c : R2) (a : ) (hF : ContDiff F) (hc : ContDiff c) (hlevel : ∀ (t : ), F (c t) = a) (t : ) :
              inner (hessianVec F (c t) (deriv c t)) (deriv c t) + inner (gradient F (c t)) (deriv (deriv c) t) = 0
              theorem PlaneCurves.curvature_level_set (F : R2) (c : R2) (a t : ) (hF : ContDiff F) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (hlevel : ∀ (t : ), F (c t) = a) (hgrad : gradient F (c t) 0) (hpos : det2 (gradient F (c t)) (deriv c t) > 0) :
              curvature c t = inner (J (gradient F (c t))) (hessianVec F (c t) (J (gradient F (c t)))) / gradient F (c t) ^ 3
              theorem PlaneCurves.curvature_level_set_neg (F : R2) (c : R2) (a t : ) (hF : ContDiff F) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (hlevel : ∀ (t : ), F (c t) = a) (hgrad : gradient F (c t) 0) (h_neg : det2 (gradient F (c t)) (deriv c t) < 0) :
              -curvature c t = inner (J (gradient F (c t))) (hessianVec F (c t) (J (gradient F (c t)))) / gradient F (c t) ^ 3
              theorem PlaneCurves.curvature_level_set_full (F : R2) (c : R2) (a t : ) (hF : ContDiff F) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (hlevel : ∀ (t : ), F (c t) = a) (hgrad : gradient F (c t) 0) (hdet_ne : det2 (gradient F (c t)) (deriv c t) 0) :
              curvature c t * gradient F (c t) ^ 3 * |det2 (gradient F (c t)) (deriv c t)| = det2 (gradient F (c t)) (deriv c t) * inner (J (gradient F (c t))) (hessianVec F (c t) (J (gradient F (c t))))
              theorem PlaneCurves.curvature_reparametrization (c : EuclideanSpace (Fin 2)) (ψ : ) (hc : ContDiff c) ( : ContDiff ψ) (hreg : ∀ (t : ), deriv c (ψ t) 0) (hψ' : ∀ (t : ), deriv ψ t > 0) (t : ) :
              curvature (c ψ) t = curvature c (ψ t)
              theorem PlaneCurves.exists_smul_of_det2_eq_zero (u v : EuclideanSpace (Fin 2)) (hv : v 0) (hdet : det2 u v = 0) :
              ∃ (s : ), u = s v
              theorem PlaneCurves.det2_sub_left (v₁ v₂ w : EuclideanSpace (Fin 2)) :
              det2 (v₁ - v₂) w = det2 v₁ w - det2 v₂ w
              theorem PlaneCurves.zero_curvature_is_line (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hreg : ∀ (t : ), deriv c t 0) (hzero : ∀ (t : ), curvature c t = 0) :
              ∃ (p : EuclideanSpace (Fin 2)) (v : EuclideanSpace (Fin 2)), ∀ (t : ), ∃ (s : ), c t = p + s v
              theorem PlaneCurves.deriv_toLp_comp {f : Fin 2} {t : } (hf : DifferentiableAt f t) :
              deriv (fun (s : ) => WithLp.toLp 2 (f s)) t = WithLp.toLp 2 (deriv f t)
              theorem PlaneCurves.deriv_graph_curve (f : ) (hf : ContDiff f) (t : ) :
              deriv (fun (s : ) => ![s, f s]) t = ![1, deriv f t]
              theorem PlaneCurves.deriv2_graph_curve (f : ) (hf : ContDiff f) (t : ) :
              deriv (deriv fun (s : ) => ![s, f s]) t = ![0, deriv (deriv f) t]
              theorem PlaneCurves.curvature_graph (f : ) (hf : ContDiff f) (t : ) :
              curvature (fun (t : ) => ![t, f t]) t = deriv (deriv f) t / (1 + deriv f t ^ 2) ^ (3 / 2)
              theorem PlaneCurves.curvature_unit_speed (c : EuclideanSpace (Fin 2)) (_hc : ContDiff c) (hunit : ∀ (t : ), deriv c t = 1) (t : ) :
              curvature c t = det2 (deriv c t) (deriv (deriv c) t)
              theorem PlaneCurves.unit_speed_second_deriv (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hunit : ∀ (t : ), deriv c t = 1) (t : ) :
              deriv (deriv c) t = curvature c t J (deriv c t)
              theorem PlaneCurves.curvature_abs_eq_norm_second_deriv (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hunit : ∀ (t : ), deriv c t = 1) (t : ) :
              theorem PlaneCurves.curvature_unit_speed_characterization (c : EuclideanSpace (Fin 2)) (hc : ContDiff c) (hunit : ∀ (t : ), deriv c t = 1) (t : ) :
              curvature c t = det2 (deriv c t) (deriv (deriv c) t) deriv (deriv c) t = curvature c t J (deriv c t) |curvature c t| = deriv (deriv c) t
              theorem PlaneCurves.analyticAt_antideriv {F : Type u_1} [NormedAddCommGroup F] [NormedSpace F] [CompleteSpace F] {f : F} {x : } (hf : AnalyticAt f x) (a : ) :
              AnalyticAt (fun (t : ) => (s : ) in a..t, f s) x
              theorem PlaneCurves.contDiff_top_antideriv {F : Type u_1} [NormedAddCommGroup F] [NormedSpace F] [CompleteSpace F] {f : F} (hf : ContDiff f) (a : ) :
              ContDiff fun (t : ) => (s : ) in a..t, f s
              theorem PlaneCurves.hasDerivAt_euclidean_pair {f g : } {f' g' t : } (hf : HasDerivAt f f' t) (hg : HasDerivAt g g' t) :
              HasDerivAt (fun (s : ) => (EuclideanSpace.equiv (Fin 2) ).symm ![f s, g s]) ((EuclideanSpace.equiv (Fin 2) ).symm ![f', g']) t
              theorem PlaneCurves.fundamental_theorem_plane_curves_existence (κ : ) ( : ContDiff κ) :
              ∃ (c : EuclideanSpace (Fin 2)), ContDiff c (∀ (t : ), deriv c t = 1) ∀ (t : ), curvature c t = κ t
              theorem PlaneCurves.fundamental_theorem_plane_curves_uniqueness (c₁ c₂ : EuclideanSpace (Fin 2)) (hc₁ : ContDiff c₁) (hc₂ : ContDiff c₂) (hunit₁ : ∀ (t : ), deriv c₁ t = 1) (hunit₂ : ∀ (t : ), deriv c₂ t = 1) ( : ∀ (t : ), curvature c₁ t = curvature c₂ t) :
              ∃ (A : Matrix (Fin 2) (Fin 2) ) (b : EuclideanSpace (Fin 2)), A.det = 1 A * A.transpose = 1 ∀ (t : ), c₂ t = (EuclideanSpace.equiv (Fin 2) ).symm (A.mulVec ((EuclideanSpace.equiv (Fin 2) ) (c₁ t))) + b
              theorem PlaneCurves.fundamental_theorem_plane_curves (κ : ) ( : ContDiff κ) :
              (∃ (c : EuclideanSpace (Fin 2)), ContDiff c (∀ (t : ), deriv c t = 1) ∀ (t : ), curvature c t = κ t) ∀ (c₁ c₂ : EuclideanSpace (Fin 2)), ContDiff c₁ContDiff c₂(∀ (t : ), deriv c₁ t = 1)(∀ (t : ), deriv c₂ t = 1)(∀ (t : ), curvature c₁ t = κ t)(∀ (t : ), curvature c₂ t = κ t)∃ (A : Matrix (Fin 2) (Fin 2) ) (b : EuclideanSpace (Fin 2)), A.det = 1 A * A.transpose = 1 ∀ (t : ), c₂ t = (EuclideanSpace.equiv (Fin 2) ).symm (A.mulVec ((EuclideanSpace.equiv (Fin 2) ) (c₁ t))) + b
              theorem PlaneCurves.osculating_circle (c : EuclideanSpace (Fin 2)) (_hc : ContDiff c) (hunit : ∀ (t : ), deriv c t = 1) (t₀ : ) ( : curvature c t₀ 0) :
              have center := c t₀ + (curvature c t₀)⁻¹ J (deriv c t₀); have R := |(curvature c t₀)⁻¹|; R > 0 c t₀ - center = R inner (c t₀ - center) (deriv c t₀) = 0 R⁻¹ = |curvature c t₀| ∀ (center' : EuclideanSpace (Fin 2)), R' > 0, c t₀ - center' = R'inner (c t₀ - center') (deriv c t₀) = 0R'⁻¹ = |curvature c t₀|inner (center' - c t₀) (J (deriv c t₀)) * curvature c t₀ > 0center' = center R' = R