Imports
/- Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Matteo Cipollina, Joseph Tooby-Smith -/ module public import Physlib.Relativity.Tensors.RealTensor.Vector.Causality.Basic

Properties of light like vectors

@[expose] public sectionlemma lightLike_iff_norm_sq_zero {d : ℕ} (p : Vector d) : causalCharacter p = CausalCharacter.lightLike ↔ ⟪p, p⟫ₘ = 0 := d:ℕp:Vector d⊢ p.causalCharacter = CausalCharacter.lightLike ↔ (minkowskiProduct p) p = 0 d:ℕp:Vector d⊢ (if (minkowskiProduct p) p = 0 then CausalCharacter.lightLike else if 0 < (minkowskiProduct p) p then CausalCharacter.timeLike else CausalCharacter.spaceLike) = CausalCharacter.lightLike ↔ (minkowskiProduct p) p = 0 d:ℕp:Vector dh:(minkowskiProduct p) p = 0⊢ CausalCharacter.lightLike = CausalCharacter.lightLike ↔ (minkowskiProduct p) p = 0d:ℕp:Vector dh:¬(minkowskiProduct p) p = 0h2:0 < (minkowskiProduct p) p⊢ False ↔ (minkowskiProduct p) p = 0d:ℕp:Vector dh:¬(minkowskiProduct p) p = 0h2:¬0 < (minkowskiProduct p) p⊢ False ↔ (minkowskiProduct p) p = 0 d:ℕp:Vector dh:(minkowskiProduct p) p = 0⊢ CausalCharacter.lightLike = CausalCharacter.lightLike ↔ (minkowskiProduct p) p = 0d:ℕp:Vector dh:¬(minkowskiProduct p) p = 0h2:0 < (minkowskiProduct p) p⊢ False ↔ (minkowskiProduct p) p = 0d:ℕp:Vector dh:¬(minkowskiProduct p) p = 0h2:¬0 < (minkowskiProduct p) p⊢ False ↔ (minkowskiProduct p) p = 0 All goals completed! 🐙 -- Zero vector has zero Minkowski norm squared @[simp] lemma causalCharacter_zero {d : ℕ} : causalCharacter (0 : Vector d) = CausalCharacter.lightLike := d:ℕ⊢ causalCharacter 0 = CausalCharacter.lightLike All goals completed! 🐙

Causally preceding is reflexive

@[simp] lemma causallyPrecedes_refl {d : ℕ} (p : Vector d) : causallyPrecedes p p := d:ℕp:Vector d⊢ p.causallyPrecedes p All goals completed! 🐙

For two lightlike vectors with equal time components, their spatial parts have equal Euclidean norms

d:ℕv:Vector dw:Vector dhv:w (Sum.inl 0) * w (Sum.inl 0) - ∑ i, v (Sum.inr i) * v (Sum.inr i) = 0hw:w (Sum.inl 0) * w (Sum.inl 0) - ∑ i, w (Sum.inr i) * w (Sum.inr i) = 0h_time:v.timeComponent = w.timeComponent⊢ ⟪v.spatialPart, v.spatialPart⟫_ℝ = ⟪w.spatialPart, w.spatialPart⟫_ℝ d:ℕv:Vector dw:Vector dhv:w (Sum.inl 0) * w (Sum.inl 0) - ∑ i, v (Sum.inr i) * v (Sum.inr i) = 0hw:w (Sum.inl 0) * w (Sum.inl 0) - ∑ i, w (Sum.inr i) * w (Sum.inr i) = 0h_time:v.timeComponent = w.timeComponent⊢ ∑ x, v (Sum.inr x) * v (Sum.inr x) = ∑ x, w (Sum.inr x) * w (Sum.inr x) All goals completed! 🐙

If two lightlike vectors have parallel spatial components, their temporal components must also be proportional, which implies the entire vectors are proportional

set_option linter.unusedVariables false ind:ℕv:Vector dw:Vector dhv:v.causalCharacter = CausalCharacter.lightLikehw:w.causalCharacter = CausalCharacter.lightLiker:ℝhr:v = r • w⊢ |(r • w) (Sum.inl 0)| = |r| * |w (Sum.inl 0)| All goals completed! 🐙