def
definition
dir
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Measurement.RecognitionAngle.ActionSmallAngle on GitHub at line 32.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
29abbrev R3 := EuclideanSpace ℝ (Fin 3)
30
31/-- Unit direction from `x` to `y` in `R3`; returns `0` on degeneracy. -/
32def dir (x y : R3) : R3 :=
33 let v := (y - x)
34 if h : ‖v‖ = 0 then 0 else v / ‖v‖
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 θ : ℝ}