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 dp.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 = 0CausalCharacter.lightLike = CausalCharacter.lightLike (minkowskiProduct p) p = 0d:p:Vector dh:¬(minkowskiProduct p) p = 0h2:0 < (minkowskiProduct p) pFalse (minkowskiProduct p) p = 0d:p:Vector dh:¬(minkowskiProduct p) p = 0h2:¬0 < (minkowskiProduct p) pFalse (minkowskiProduct p) p = 0 d:p:Vector dh:(minkowskiProduct p) p = 0CausalCharacter.lightLike = CausalCharacter.lightLike (minkowskiProduct p) p = 0d:p:Vector dh:¬(minkowskiProduct p) p = 0h2:0 < (minkowskiProduct p) pFalse (minkowskiProduct p) p = 0d:p:Vector dh:¬(minkowskiProduct p) p = 0h2:¬0 < (minkowskiProduct p) pFalse (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 dp.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.timeComponentv.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! 🐙