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.MinkowskiProduct

Causality of Lorentz vectors

@[expose] public section

Classification of lorentz vectors based on their causal character.

inductive CausalCharacter | timeLike | lightLike | spaceLike deriving DecidableEq

A Lorentz vector p is

    lightLike if ⟪p, p⟫ₘ = 0.

    timeLike if 0 < ⟪p, p⟫ₘ.

    spaceLike if ⟪p, p⟫ₘ < 0. Note that ⟪p, p⟫ₘ is defined in the +--- convention.

def causalCharacter {d : } (p : Vector d) : CausalCharacter := let v0 := p, p⟫ₘ if v0 = 0 then CausalCharacter.lightLike else if 0 < v0 then CausalCharacter.timeLike else CausalCharacter.spaceLike

causalCharacter are invariant under an action of the Lorentz group.

All goals completed! 🐙
d:p:Vector dh1:¬(minkowskiProduct p) p = 0h2:(minkowskiProduct p) p = 0 (minkowskiProduct p) p < 0(minkowskiProduct p) p < 0 All goals completed! 🐙

The Lorentz vector p and -p have the same causalCharacter

d:p:Vector dh:(minkowskiProduct (-p)) (-p) = (minkowskiProduct p) p(-p).causalCharacter = p.causalCharacter All goals completed! 🐙

The future light cone of a Lorentz vector p is defined as those vectors q such that

    causalCharacter (q - p) is timeLike and

    (q - p) (Sum.inl 0) is positive.

def interiorFutureLightCone {d : } (p : Vector d) : Set (Vector d) := {q | causalCharacter (q - p) = .timeLike 0 < (q - p) (Sum.inl 0)}

The backward light cone of a Lorentz vector p is defined as those vectors q such that

    causalCharacter (q - p) is timeLike and

    (q - p) (Sum.inl 0) is negative.

def interiorPastLightCone {d : } (p : Vector d) : Set (Vector d) := {q | causalCharacter (q - p) = .timeLike (q - p) (Sum.inl 0) < 0}

The light cone boundary (null surface) of a spacetime point p.

def lightConeBoundary {d : } (p : Vector d) : Set (Vector d) := {q | causalCharacter (q - p) = .lightLike}

The future light cone boundary (null surface) of a spacetime point p.

def futureLightConeBoundary {d : } (p : Vector d) : Set (Vector d) := {q | causalCharacter (q - p) = .lightLike 0 (q - p) (Sum.inl 0)}

The past light cone boundary (null surface) of a spacetime point p.

def pastLightConeBoundary {d : } (p : Vector d) : Set (Vector d) := {q | causalCharacter (q - p) = .lightLike (q - p) (Sum.inl 0) 0}

Any point p lies on its own light cone boundary, as p - p = 0 has zero Minkowski norm squared.

lemma self_mem_lightConeBoundary {d : } (p : Vector d) : p lightConeBoundary p := d:p:Vector dp p.lightConeBoundary All goals completed! 🐙

A proposition which is true if q is in the causal future of event p.

def causallyFollows {d : } (p q : Vector d) : Prop := q interiorFutureLightCone p q futureLightConeBoundary p

A proposition which is true if q is in the causal past of event p.

def causallyPrecedes {d : } (p q : Vector d) : Prop := q interiorPastLightCone p q pastLightConeBoundary p

Events p and q are causally related.

def causallyRelated {d : } (p q : Vector d) : Prop := causallyFollows p q causallyFollows q p

Events p and q are causally unrelated (spacelike separated).

def causallyUnrelated {d : } (p q : Vector d) : Prop := causalCharacter (p - q) = CausalCharacter.spaceLike

The causal diamond between events p and q, where p is assumed to causally precede q.

def causalDiamond {d : } (p q : Vector d) : Set (Vector d) := {r | causallyFollows p r causallyFollows r q}

In Minkowski spacetime with (+---) signature, we can define future-directed vectors as having positive time components (by convention)

def isFutureDirected {d : } (v : Vector d) : Prop := 0 < timeComponent v

In Minkowski spacetime with (+---) signature, we can define past-directed vectors as having negative time components (by convention)

def isPastDirected {d : } (v : Vector d) : Prop := timeComponent v < 0