lemma
proved
logSpiral_ne_zero
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Flight.Geometry on GitHub at line 48.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
-
step -
kernel -
Constants -
is -
is -
for -
is -
Params -
kernel -
Params -
r0 -
kappa -
is -
kappa -
and -
Params -
logSpiral -
Params -
stepRatio
used by
formal source
45open IndisputableMonolith.Spiral
46
47/-- `logSpiral` is nonzero whenever `r0` is nonzero (since φ^x > 0). -/
48lemma logSpiral_ne_zero
49 {r0 θ : ℝ} {P : SpiralField.Params} (hr0 : r0 ≠ 0) :
50 SpiralField.logSpiral r0 θ P ≠ 0 := by
51 classical
52 unfold SpiralField.logSpiral
53 -- `φ > 0` hence `φ^exp > 0`.
54 have hφpos : 0 < IndisputableMonolith.Constants.phi :=
55 IndisputableMonolith.Constants.phi_pos
56 have hrpow_ne : Real.rpow IndisputableMonolith.Constants.phi
57 ((P.kappa : ℝ) * θ / (2 * Real.pi)) ≠ 0 := by
58 exact ne_of_gt (Real.rpow_pos_of_pos hφpos _)
59 exact mul_ne_zero hr0 hrpow_ne
60
61/-- Closed-form step ratio for the log-spiral: it depends only on `Δθ` and `kappa`.
62
63This is the mathematical kernel behind the "discrete pitch families" idea.
64
65We assume `r0 ≠ 0` to avoid the definitional `if r₀ = 0 then 1` branch
66in `SpiralField.stepRatio`.
67-/
68lemma stepRatio_logSpiral_closed_form
69 (r0 θ Δθ : ℝ) (P : SpiralField.Params) (hr0 : r0 ≠ 0) :
70 SpiralField.stepRatio r0 θ Δθ P
71 = Real.rpow IndisputableMonolith.Constants.phi ((P.kappa : ℝ) * Δθ / (2 * Real.pi)) := by
72 classical
73 -- Unfold the definition and discharge the `if` branch *before* unfolding `logSpiral`.
74 unfold SpiralField.stepRatio
75 have hr0path : SpiralField.logSpiral r0 θ P ≠ 0 :=
76 logSpiral_ne_zero (r0:=r0) (θ:=θ) (P:=P) hr0
77 simp [hr0path]
78