theorem
proved
spatialNormSq_nonneg
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Relativity.Calculus.Derivatives on GitHub at line 131.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
-
differentiableAt_coordRay_radialInv -
laplacian_radialInv_n -
laplacian_radialInv_zero_no_const -
partialDeriv_v2_spatialRadius -
spatialRadius_coordRay_ne_zero -
spatialRadius_ne_zero_iff -
spatialRadius_pos_of_ne_zero -
laplacian_radialInv_n_proved -
laplacian_radialInv_zero_no_const_proved -
partialDeriv_v2_spatialRadius_proved -
spatialRadius_coordRay_ne_zero_proved
formal source
128/-- Spatial norm squared `x₁² + x₂² + x₃²`. -/
129def spatialNormSq (x : Fin 4 → ℝ) : ℝ := x 1 ^ 2 + x 2 ^ 2 + x 3 ^ 2
130
131theorem spatialNormSq_nonneg (x : Fin 4 → ℝ) : 0 ≤ spatialNormSq x := by
132 unfold spatialNormSq
133 positivity
134
135theorem spatialNormSq_eq_zero_iff (x : Fin 4 → ℝ) : spatialNormSq x = 0 ↔ x 1 = 0 ∧ x 2 = 0 ∧ x 3 = 0 := by
136 unfold spatialNormSq
137 constructor
138 · intro h
139 have h1 := sq_nonneg (x 1)
140 have h2 := sq_nonneg (x 2)
141 have h3 := sq_nonneg (x 3)
142 have h1_zero : x 1 ^ 2 = 0 := by linarith
143 have h2_zero : x 2 ^ 2 = 0 := by linarith
144 have h3_zero : x 3 ^ 2 = 0 := by linarith
145 simp only [sq_eq_zero_iff] at h1_zero h2_zero h3_zero
146 exact ⟨h1_zero, h2_zero, h3_zero⟩
147 · intro h
148 simp [h]
149
150/-- Spatial radius `r = √(x₁² + x₂² + x₃²)`. -/
151noncomputable def spatialRadius (x : Fin 4 → ℝ) : ℝ := Real.sqrt (spatialNormSq x)
152
153theorem spatialRadius_pos_iff (x : Fin 4 → ℝ) : 0 < spatialRadius x ↔ 0 < spatialNormSq x := by
154 unfold spatialRadius
155 rw [Real.sqrt_pos]
156
157theorem spatialRadius_ne_zero_iff (x : Fin 4 → ℝ) : spatialRadius x ≠ 0 ↔ spatialNormSq x ≠ 0 := by
158 unfold spatialRadius
159 rw [Real.sqrt_ne_zero (spatialNormSq_nonneg x)]
160
161/-- Nonzero spatial radius is automatically positive. -/