def
definition
angleAt
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Measurement.RecognitionAngle.ActionSmallAngle on GitHub at line 38.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
35
36/-- Angle at `x` between rays to `y` and `z`, defined via `arccos` of the inner product
37of unit directions. Returns `0` if either ray is degenerate. Range is in `[0, π]`. -/
38def angleAt (x y z : R3) : ℝ :=
39 let u := dir x y
40 let v := dir x z
41 if (u = 0) ∨ (v = 0) then 0 else Real.arccos ((⟪u, v⟫_ℝ) / (‖u‖ * ‖v‖))
42
43/-! ## Kernel action and budget threshold -/
44
45/-- Kernel action as a function of the sensor angle `θ`. Domain of interest is `(0, π/2]`. -/
46def A_of_theta (θ : ℝ) : ℝ := -Real.log (Real.sin θ)
47
48/-- For budget `Amax > 0`, the minimal admissible angle. -/
49def thetaMin (Amax : ℝ) : ℝ := Real.arcsin (Real.exp (-Amax))
50
51/-! ## Core limit and threshold lemmas (via classical results) -/
52
53open Filter
54
55/-- As θ → 0⁺, the kernel action `A_of_theta θ = -log(sin θ)` diverges to `+∞`. -/
56theorem action_small_angle_diverges :
57 Tendsto (fun θ => A_of_theta θ) (nhdsWithin 0 (Set.Ioi 0)) atTop := by
58 simpa [A_of_theta] using
59 IndisputableMonolith.Cost.ClassicalResults.neg_log_sin_tendsto_atTop_at_zero_right
60
61/-- Budget inequality implies the minimal angle threshold. -/
62theorem theta_min_spec {Amax θ : ℝ}
63 (hA : 0 < Amax) (hθ0 : 0 < θ) (hθh : θ ≤ π/2)
64 (hAineq : A_of_theta θ ≤ Amax) :
65 θ ≥ thetaMin Amax := by
66 simpa [A_of_theta, thetaMin] using
67 IndisputableMonolith.Cost.ClassicalResults.theta_min_spec_inequality Amax θ hA hθ0 hθh hAineq
68