Imports
/- Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Physlib.Relativity.PauliMatrices.Basic public import Physlib.Relativity.MinkowskiMatrix

Interaction of Pauli matrices with self-adjoint matrices

@[expose] public section

The trace of a pauli-matrix multiplied by a self-adjoint 2×2 matrix is real.

All goals completed! 🐙

Two 2×2 self-adjoint matrices are equal if the (complex) traces of each matrix multiplied by each of the Pauli-matrices are equal.

A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))h0:(σ (Sum.inl 0) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inl 0) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh1:(σ (Sum.inr 0) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 0) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh2:(σ (Sum.inr 1) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 1) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh3:(σ (Sum.inr 2) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 2) * !![B 0 0, B 0 1; B 1 0, B 1 1]).tracei:Fin 2j:Fin 2A i j = B i j A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))h1:(σ (Sum.inr 0) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 0) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh2:(σ (Sum.inr 1) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 1) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh3:(σ (Sum.inr 2) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 2) * !![B 0 0, B 0 1; B 1 0, B 1 1]).tracei:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1A i j = B i j A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))h2:(σ (Sum.inr 1) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 1) * !![B 0 0, B 0 1; B 1 0, B 1 1]).traceh3:(σ (Sum.inr 2) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 2) * !![B 0 0, B 0 1; B 1 0, B 1 1]).tracei:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1A i j = B i j A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))h3:(σ (Sum.inr 2) * !![A 0 0, A 0 1; A 1 0, A 1 1]).trace = (σ (Sum.inr 2) * !![B 0 0, B 0 1; B 1 0, B 1 1]).tracei:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1A i j = B i j A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A i j = B i j match i, j with A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 0 0 = B 0 0 linear_combination (norm := All goals completed! 🐙) (h0 + h3) / 2 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 0 1 = B 0 1 linear_combination (norm := A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 0 1 * (1 / 2) + A 0 1 * I ^ 2 * (1 / 2) + B 1 0 * (1 / 2) + B 1 0 * I ^ 2 * (1 / 2) + B 0 1 * (-1 / 2) + B 0 1 * I ^ 2 * (-1 / 2) + I ^ 2 * A 1 0 * (-1 / 2) + A 1 0 * (-1 / 2) = 0) (h1 - I * h2) / 2 All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 1 0 = B 1 0 linear_combination (norm := A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 1 0 * (1 / 2) + A 1 0 * I ^ 2 * (1 / 2) + B 1 0 * (-1 / 2) + B 1 0 * I ^ 2 * (-1 / 2) + B 0 1 * (1 / 2) + B 0 1 * I ^ 2 * (1 / 2) + I ^ 2 * A 0 1 * (-1 / 2) + A 0 1 * (-1 / 2) = 0) (h1 + I * h2) / 2 All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))i:Fin 2j:Fin 2h0:A 0 0 + A 1 1 = B 0 0 + B 1 1h1:A 1 0 + A 0 1 = B 1 0 + B 0 1h2:-(I * A 1 0) + I * A 0 1 = -(I * B 1 0) + I * B 0 1h3:A 0 0 + -A 1 1 = B 0 0 + -B 1 1A 1 1 = B 1 1 linear_combination (norm := All goals completed! 🐙) (h0 - h3) / 2

Two 2×2 self-adjoint matrices are equal if the real traces of each matrix multiplied by each of the Pauli-matrices are equal.

A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))B:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))h0:(σ (Sum.inl 0) * A).trace.re = (σ (Sum.inl 0) * B).trace.reh1:(σ (Sum.inr 0) * A).trace.re = (σ (Sum.inr 0) * B).trace.reh2:(σ (Sum.inr 1) * A).trace.re = (σ (Sum.inr 1) * B).trace.reh3:(σ (Sum.inr 2) * A).trace.re = (σ (Sum.inr 2) * B).trace.reh0':(σ (Sum.inl 0) * A).trace = (σ (Sum.inl 0) * B).traceh1':(σ (Sum.inr 0) * A).trace = (σ (Sum.inr 0) * B).traceh2':(σ (Sum.inr 1) * A).trace = (σ (Sum.inr 1) * B).traceh3':(σ (Sum.inr 2) * A).trace = (σ (Sum.inr 2) * B).traceA = B All goals completed! 🐙

An auxiliary function which on i : Fin 1 ⊕ Fin 3 returns the corresponding Pauli-matrix as a self-adjoint matrix.

def pauliSelfAdjoint (i : Fin 1 Fin 3) : selfAdjoint (Matrix (Fin 2) (Fin 2) ) := pauliMatrix i, pauliMatrix_selfAdjoint i

The Pauli matrices are linearly independent.

g:Fin 1 Fin 3 hg:g (Sum.inl 0) pauliSelfAdjoint (Sum.inl 0) + (g (Sum.inr 0) pauliSelfAdjoint (Sum.inr 0) + g (Sum.inr 1) pauliSelfAdjoint (Sum.inr 1) + g (Sum.inr 2) pauliSelfAdjoint (Sum.inr 2)) = 0 (i : Fin 1 Fin 3), g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0 (i : Fin 1 Fin 3), g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0i:Fin 1 Fin 3g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0i:Fin 1 Fin 3h1:(σ i * (g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ))).trace = (σ i * 0).traceg i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0i:Fin 1 Fin 3h1:g (Sum.inl 0) (σ i * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ i * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ i * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ i * σ (Sum.inr 2)).trace) = 0g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inl ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 1, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 2, )) = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inl ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 1, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), + (g (Sum.inr 0) σ (Sum.inr 0), + g (Sum.inr 1) σ (Sum.inr 1), + g (Sum.inr 2) σ (Sum.inr 2), ) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inl 0)).trace + (g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 0)).trace + g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 1)).trace + g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 2)).trace) = 0g (Sum.inr ((fun i => i) 2, )) = 0 All goals completed! 🐙

The Pauli matrices span all self-adjoint matrices.

lemma pauliSelfAdjoint_span : Submodule.span (Set.range pauliSelfAdjoint) := Submodule.span (Set.range pauliSelfAdjoint) (x : (selfAdjoint (Matrix (Fin 2) (Fin 2) ))), c, i, c i pauliSelfAdjoint i = x A:(selfAdjoint (Matrix (Fin 2) (Fin 2) )) c, i, c i pauliSelfAdjoint i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re c, i, c i pauliSelfAdjoint i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re i, c i pauliSelfAdjoint i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)) = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inl 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inl 0) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 0) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 1) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 1) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 2) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 2) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inl 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inl 0) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re2⁻¹ * (σ (Sum.inl 0) * A).trace.re * 2 = (σ (Sum.inl 0) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 0) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re2⁻¹ * (σ (Sum.inr 0) * A).trace.re * 2 = (σ (Sum.inr 0) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 1) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 1) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re2⁻¹ * (σ (Sum.inr 1) * A).trace.re * 2 = (σ (Sum.inr 1) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 2) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint (Sum.inl 0) + ((2⁻¹ * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint (Sum.inr 0) + (2⁻¹ * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint (Sum.inr 1) + (2⁻¹ * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint (Sum.inr 2)))).trace.re = (σ (Sum.inr 2) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => 1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => 1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => 1 / 2 * (σ (Sum.inr 2) * A).trace.re2⁻¹ * (σ (Sum.inr 2) * A).trace.re * 2 = (σ (Sum.inr 2) * A).trace.re All goals completed! 🐙

The basis of selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ) formed by Pauli matrices.

def pauliBasis : Basis (Fin 1 Fin 3) (selfAdjoint (Matrix (Fin 2) (Fin 2) )) := Basis.mk pauliSelfAdjoint_linearly_independent pauliSelfAdjoint_span

An auxiliary function which on i : Fin 1 ⊕ Fin 3 returns the corresponding Pauli-matrix as a self-adjoint matrix with a minus sign for Sum.inr _.

i:Fin 1 Fin 3σ (Sum.inr 2) selfAdjoint (Matrix (Fin 2) (Fin 2) ); All goals completed! 🐙

The Pauli matrices where σi are negated are linearly independent.

g:Fin 1 Fin 3 hg:g (Sum.inl 0) pauliSelfAdjoint' (Sum.inl 0) + (g (Sum.inr 0) pauliSelfAdjoint' (Sum.inr 0) + g (Sum.inr 1) pauliSelfAdjoint' (Sum.inr 1) + g (Sum.inr 2) pauliSelfAdjoint' (Sum.inr 2)) = 0 (i : Fin 1 Fin 3), g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0 (i : Fin 1 Fin 3), g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0i:Fin 1 Fin 3g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0i:Fin 1 Fin 3h1:(σ i * (g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6))).trace = (σ i * 0).traceg i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0i:Fin 1 Fin 3h1:g (Sum.inl 0) (σ i * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ i * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ i * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ i * σ (Sum.inr 2)).trace)) = 0g i = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inl ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 1, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 2, )) = 0 g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inl ((fun i => i) 0, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inl ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 0, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 0, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 1, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 1, )) = 0g:Fin 1 Fin 3 hg:g (Sum.inl 0) σ (Sum.inl 0), pauliSelfAdjoint'._proof_2 + (g (Sum.inr 0) -σ (Sum.inr 0), pauliSelfAdjoint'._proof_4 + g (Sum.inr 1) -σ (Sum.inr 1), pauliSelfAdjoint'._proof_5 + g (Sum.inr 2) -σ (Sum.inr 2), pauliSelfAdjoint'._proof_6) = 0h1:g (Sum.inl 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inl 0)).trace + (-(g (Sum.inr 0) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 0)).trace) + -(g (Sum.inr 1) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 1)).trace) + -(g (Sum.inr 2) (σ (Sum.inr ((fun i => i) 2, )) * σ (Sum.inr 2)).trace)) = 0g (Sum.inr ((fun i => i) 2, )) = 0 All goals completed! 🐙

The Pauli matrices where σi are negated span all Self-adjoint matrices.

lemma pauliSelfAdjoint'_span : Submodule.span (Set.range pauliSelfAdjoint') := Submodule.span (Set.range pauliSelfAdjoint') (x : (selfAdjoint (Matrix (Fin 2) (Fin 2) ))), c, i, c i pauliSelfAdjoint' i = x A:(selfAdjoint (Matrix (Fin 2) (Fin 2) )) c, i, c i pauliSelfAdjoint' i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re c, i, c i pauliSelfAdjoint' i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re i, c i pauliSelfAdjoint' i = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)) = A A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inl 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inl 0) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 0) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 1) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 1) * A).trace.reA:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 2) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 2) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inl 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inl 0) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re2⁻¹ * (σ (Sum.inl 0) * A).trace.re * 2 = (σ (Sum.inl 0) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 0) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 0) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re-(-1 / 2 * (σ (Sum.inr 0) * A).trace.re * 2) = (σ (Sum.inr 0) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 1) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 1) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re-(-1 / 2 * (σ (Sum.inr 1) * A).trace.re * 2) = (σ (Sum.inr 1) * A).trace.re All goals completed! 🐙 A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re(σ (Sum.inr 2) * ((2⁻¹ * (σ (Sum.inl 0) * A).trace.re) pauliSelfAdjoint' (Sum.inl 0) + ((-1 / 2 * (σ (Sum.inr 0) * A).trace.re) pauliSelfAdjoint' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * A).trace.re) pauliSelfAdjoint' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * A).trace.re) pauliSelfAdjoint' (Sum.inr 2)))).trace.re = (σ (Sum.inr 2) * A).trace.re A:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))c:Fin 1 Fin 3 := fun i => match i with | Sum.inl 0 => 1 / 2 * (σ (Sum.inl 0) * A).trace.re | Sum.inr 0 => -1 / 2 * (σ (Sum.inr 0) * A).trace.re | Sum.inr 1 => -1 / 2 * (σ (Sum.inr 1) * A).trace.re | Sum.inr 2 => -1 / 2 * (σ (Sum.inr 2) * A).trace.re-(-1 / 2 * (σ (Sum.inr 2) * A).trace.re * 2) = (σ (Sum.inr 2) * A).trace.re All goals completed! 🐙

The basis of selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ) formed by Pauli matrices where the 1, 2, 3 pauli matrices are negated. These can be thought of as the covariant Pauli-matrices.

def pauliBasis' : Basis (Fin 1 Fin 3) (selfAdjoint (Matrix (Fin 2) (Fin 2) )) := Basis.mk pauliSelfAdjoint'_linearly_independent pauliSelfAdjoint'_span

The decomposition of a self-adjoint matrix into the Pauli matrices (where σi are negated).

lemma pauliBasis'_decomp (M : selfAdjoint (Matrix (Fin 2) (Fin 2) )) : M = (1/2 * (Matrix.trace (σ0 * M.1)).re) pauliBasis' (Sum.inl 0) + (-1/2 * (Matrix.trace (σ1 * M.1)).re) pauliBasis' (Sum.inr 0) + (-1/2 * (Matrix.trace (σ2 * M.1)).re) pauliBasis' (Sum.inr 1) + (-1/2 * (Matrix.trace (σ3 * M.1)).re) pauliBasis' (Sum.inr 2) := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))M = (1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2) M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inl 0) * M).trace.re = (σ (Sum.inl 0) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.reM:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 0) * M).trace.re = (σ (Sum.inr 0) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.reM:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 1) * M).trace.re = (σ (Sum.inr 1) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.reM:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 2) * M).trace.re = (σ (Sum.inr 2) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.re M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inl 0) * M).trace.re = (σ (Sum.inl 0) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.re M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inl 0) * M).trace.re = 2⁻¹ * (σ (Sum.inl 0) * M).trace.re * 2 All goals completed! 🐙 M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 0) * M).trace.re = (σ (Sum.inr 0) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.re M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 0) * M).trace.re = -(-1 / 2 * (σ (Sum.inr 0) * M).trace.re * 2) All goals completed! 🐙 M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 1) * M).trace.re = (σ (Sum.inr 1) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.re M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 1) * M).trace.re = -(-1 / 2 * (σ (Sum.inr 1) * M).trace.re * 2) All goals completed! 🐙 M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 2) * M).trace.re = (σ (Sum.inr 2) * ((1 / 2 * (σ (Sum.inl 0) * M).trace.re) pauliBasis' (Sum.inl 0) + (-1 / 2 * (σ (Sum.inr 0) * M).trace.re) pauliBasis' (Sum.inr 0) + (-1 / 2 * (σ (Sum.inr 1) * M).trace.re) pauliBasis' (Sum.inr 1) + (-1 / 2 * (σ (Sum.inr 2) * M).trace.re) pauliBasis' (Sum.inr 2))).trace.re M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))(σ (Sum.inr 2) * M).trace.re = -(-1 / 2 * (σ (Sum.inr 2) * M).trace.re * 2) All goals completed! 🐙

The component of a self-adjoint matrix in the direction σ0 under the basis formed by the covariant Pauli matrices.

@[simp] lemma pauliBasis'_repr_inl_0 (M : selfAdjoint (Matrix (Fin 2) (Fin 2) )) : pauliBasis'.repr M (Sum.inl 0) = 1 / 2 * Matrix.trace (σ0 * M.1) := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))((pauliBasis'.repr M) (Sum.inl 0)) = 1 / 2 * (σ (Sum.inl 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = i, (pauliBasis'.repr M) i pauliBasis' i((pauliBasis'.repr M) (Sum.inl 0)) = 1 / 2 * (σ (Sum.inl 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))((pauliBasis'.repr M) (Sum.inl 0)) = 1 / 2 * (σ (Sum.inl 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:(σ (Sum.inl 0) * M).trace / 2 = (σ (Sum.inl 0) * ((pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2)))).trace / 2((pauliBasis'.repr M) (Sum.inl 0)) = 1 / 2 * (σ (Sum.inl 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:(σ (Sum.inl 0) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inl 0))((pauliBasis'.repr M) (Sum.inl 0)) = 1 / 2 * (σ (Sum.inl 0) * M).trace linear_combination (norm := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:(σ (Sum.inl 0) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inl 0))((pauliBasis'.repr M) (Sum.inl 0)) - ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inl 0)) = 0) -h0 All goals completed! 🐙

The component of a self-adjoint matrix in the direction -σ1 under the basis formed by the covariant Pauli matrices.

@[simp] lemma pauliBasis'_repr_inr_0 (M : selfAdjoint (Matrix (Fin 2) (Fin 2) )) : pauliBasis'.repr M (Sum.inr 0) = - 1 / 2 * Matrix.trace (σ1 * M.1) := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))((pauliBasis'.repr M) (Sum.inr 0)) = -1 / 2 * (σ (Sum.inr 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = i, (pauliBasis'.repr M) i pauliBasis' i((pauliBasis'.repr M) (Sum.inr 0)) = -1 / 2 * (σ (Sum.inr 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))((pauliBasis'.repr M) (Sum.inr 0)) = -1 / 2 * (σ (Sum.inr 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 0) * M).trace / 2 = -(σ (Sum.inr 0) * ((pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2)))).trace / 2((pauliBasis'.repr M) (Sum.inr 0)) = -1 / 2 * (σ (Sum.inr 0) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 0) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 0))((pauliBasis'.repr M) (Sum.inr 0)) = -1 / 2 * (σ (Sum.inr 0) * M).trace linear_combination (norm := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 0) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 0))((pauliBasis'.repr M) (Sum.inr 0)) - ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 0)) = 0) -h0 All goals completed! 🐙

The component of a self-adjoint matrix in the direction -σ2 under the basis formed by the covariant Pauli matrices.

@[simp] lemma pauliBasis'_repr_inr_1 (M : selfAdjoint (Matrix (Fin 2) (Fin 2) )) : pauliBasis'.repr M (Sum.inr 1) = - 1 / 2 * Matrix.trace (σ2 * M.1) := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))((pauliBasis'.repr M) (Sum.inr 1)) = -1 / 2 * (σ (Sum.inr 1) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = i, (pauliBasis'.repr M) i pauliBasis' i((pauliBasis'.repr M) (Sum.inr 1)) = -1 / 2 * (σ (Sum.inr 1) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))((pauliBasis'.repr M) (Sum.inr 1)) = -1 / 2 * (σ (Sum.inr 1) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 1) * M).trace / 2 = -(σ (Sum.inr 1) * ((pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2)))).trace / 2((pauliBasis'.repr M) (Sum.inr 1)) = -1 / 2 * (σ (Sum.inr 1) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 1) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 1))((pauliBasis'.repr M) (Sum.inr 1)) = -1 / 2 * (σ (Sum.inr 1) * M).trace linear_combination (norm := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 1) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 1))((pauliBasis'.repr M) (Sum.inr 1)) - ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 1)) = 0) -h0 All goals completed! 🐙

The component of a self-adjoint matrix in the direction -σ3 under the basis formed by the covariant Pauli matrices.

@[simp] lemma pauliBasis'_repr_inr_2 (M : selfAdjoint (Matrix (Fin 2) (Fin 2) )) : pauliBasis'.repr M (Sum.inr 2) = - 1 / 2 * Matrix.trace (σ3 * M.1) := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))((pauliBasis'.repr M) (Sum.inr 2)) = -1 / 2 * (σ (Sum.inr 2) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = i, (pauliBasis'.repr M) i pauliBasis' i((pauliBasis'.repr M) (Sum.inr 2)) = -1 / 2 * (σ (Sum.inr 2) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))((pauliBasis'.repr M) (Sum.inr 2)) = -1 / 2 * (σ (Sum.inr 2) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 2) * M).trace / 2 = -(σ (Sum.inr 2) * ((pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2)))).trace / 2((pauliBasis'.repr M) (Sum.inr 2)) = -1 / 2 * (σ (Sum.inr 2) * M).trace M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 2) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 2))((pauliBasis'.repr M) (Sum.inr 2)) = -1 / 2 * (σ (Sum.inr 2) * M).trace linear_combination (norm := M:(selfAdjoint (Matrix (Fin 2) (Fin 2) ))hM:M = (pauliBasis'.repr M) (Sum.inl 0) pauliBasis' (Sum.inl 0) + ((pauliBasis'.repr M) (Sum.inr 0) pauliBasis' (Sum.inr 0) + (pauliBasis'.repr M) (Sum.inr 1) pauliBasis' (Sum.inr 1) + (pauliBasis'.repr M) (Sum.inr 2) pauliBasis' (Sum.inr 2))h0:-(σ (Sum.inr 2) * M).trace / 2 = ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 2))((pauliBasis'.repr M) (Sum.inr 2)) - ((pauliSelfAdjoint'_linearly_independent.repr M, ) (Sum.inr 2)) = 0) -h0 All goals completed! 🐙

The relationship between the basis pauliBasis of contravariant Pauli-matrices and the basis pauliBasis' of covariant Pauli matrices is by multiplication by the Minkowski matrix.

lemma pauliBasis_minkowskiMetric_pauliBasis' (i : Fin 1 Fin 3) : pauliBasis i = minkowskiMatrix i i pauliBasis' i := i:Fin 1 Fin 3pauliBasis i = minkowskiMatrix i i pauliBasis' i pauliBasis (Sum.inl ((fun i => i) 0, )) = minkowskiMatrix (Sum.inl ((fun i => i) 0, )) (Sum.inl ((fun i => i) 0, )) pauliBasis' (Sum.inl ((fun i => i) 0, ))pauliBasis (Sum.inr ((fun i => i) 0, )) = minkowskiMatrix (Sum.inr ((fun i => i) 0, )) (Sum.inr ((fun i => i) 0, )) pauliBasis' (Sum.inr ((fun i => i) 0, ))pauliBasis (Sum.inr ((fun i => i) 1, )) = minkowskiMatrix (Sum.inr ((fun i => i) 1, )) (Sum.inr ((fun i => i) 1, )) pauliBasis' (Sum.inr ((fun i => i) 1, ))pauliBasis (Sum.inr ((fun i => i) 2, )) = minkowskiMatrix (Sum.inr ((fun i => i) 2, )) (Sum.inr ((fun i => i) 2, )) pauliBasis' (Sum.inr ((fun i => i) 2, )) pauliBasis (Sum.inl ((fun i => i) 0, )) = minkowskiMatrix (Sum.inl ((fun i => i) 0, )) (Sum.inl ((fun i => i) 0, )) pauliBasis' (Sum.inl ((fun i => i) 0, ))pauliBasis (Sum.inr ((fun i => i) 0, )) = minkowskiMatrix (Sum.inr ((fun i => i) 0, )) (Sum.inr ((fun i => i) 0, )) pauliBasis' (Sum.inr ((fun i => i) 0, ))pauliBasis (Sum.inr ((fun i => i) 1, )) = minkowskiMatrix (Sum.inr ((fun i => i) 1, )) (Sum.inr ((fun i => i) 1, )) pauliBasis' (Sum.inr ((fun i => i) 1, ))pauliBasis (Sum.inr ((fun i => i) 2, )) = minkowskiMatrix (Sum.inr ((fun i => i) 2, )) (Sum.inr ((fun i => i) 2, )) pauliBasis' (Sum.inr ((fun i => i) 2, )) All goals completed! 🐙