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.Fermions.Weyl.UnitMetrics of Weyl fermions
We define the metrics for Weyl fermions, often denoted ε in the literature.
These allow us to go from left-handed to dual-left-handed Weyl fermions and back,
and from right-handed to dual-right-handed Weyl fermions and back.
@[expose] public section
The raw 2x2 matrix corresponding to the metric for fermions.
def metricRaw : Matrix (Fin 2) (Fin 2) ℂ := !![0, 1; -1, 0]
Multiplying an element of SL(2, ℂ) on the left with the metric 𝓔 is equivalent
to multiplying the inverse-transpose of that element on the right with the metric.
M:SL(2, ℂ)⊢ !![↑M 0 0 * 0 + ↑M 0 1 * -1, ↑M 0 0 * 1 + ↑M 0 1 * 0; ↑M 1 0 * 0 + ↑M 1 1 * -1, ↑M 1 0 * 1 + ↑M 1 1 * 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1]
simp only [Fin.isValue, mul_zero, mul_neg, mul_one, zero_add, add_zero, transpose_apply, of_apply,
cons_val', cons_val_zero, empty_val', cons_val_fin_one, cons_val_one, cons_mul,
Nat.succ_eq_add_one, Nat.reduceAdd, vecMul_cons, head_cons, zero_smul, tail_cons, one_smul,
empty_vecMul, neg_smul, neg_cons, neg_neg, neg_empty, empty_mul, Equiv.symm_apply_apply] All goals completed! 🐙
lemma metricRaw_comm (M : SL(2,ℂ)) : metricRaw * M.1 = (M.1⁻¹)ᵀ * metricRaw := by M:SL(2, ℂ)⊢ metricRaw * ↑M = (↑M)⁻¹ᵀ * metricRaw
rw [metricRaw M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * ↑M = (↑M)⁻¹ᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * ↑M = (↑M)⁻¹ᵀ * !![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * ↑M = (↑M)⁻¹ᵀ * !![0, 1; -1, 0]
rw [Lorentz.SL2C.inverse_coe, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * ↑M = (↑M⁻¹)ᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = (↑M⁻¹)ᵀ * !![0, 1; -1, 0] eta_fin_two M.1 M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = (↑M⁻¹)ᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = (↑M⁻¹)ᵀ * !![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = (↑M⁻¹)ᵀ * !![0, 1; -1, 0]
rw [SpecialLinearGroup.coe_inv, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = (↑M).adjugateᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0] Matrix.adjugate_fin_two, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1] = !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0]
Matrix.mul_fin_two, M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0] eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᵀ M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0 * ↑M 0 0 + 1 * ↑M 1 0, 0 * ↑M 0 1 + 1 * ↑M 1 1; -1 * ↑M 0 0 + 0 * ↑M 1 0, -1 * ↑M 0 1 + 0 * ↑M 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᵀ 1 1] *
!![0, 1; -1, 0]
simp only [Fin.isValue, zero_mul, one_mul, zero_add, neg_mul, add_zero, transpose_apply, of_apply,
cons_val', cons_val_zero, empty_val', cons_val_fin_one, cons_val_one, cons_mul,
Nat.succ_eq_add_one, Nat.reduceAdd, vecMul_cons, head_cons, smul_cons, smul_eq_mul, mul_zero,
mul_one, smul_empty, tail_cons, neg_smul, mul_neg, neg_cons, neg_neg, neg_zero, neg_empty,
empty_vecMul, add_cons, empty_add_empty, empty_mul, Equiv.symm_apply_apply] All goals completed! 🐙
lemma star_comm_metricRaw (M : SL(2,ℂ)) : M.1.map star * metricRaw = metricRaw * ((M.1)⁻¹)ᴴ := by M:SL(2, ℂ)⊢ (↑M).map star * metricRaw = metricRaw * (↑M)⁻¹ᴴ
rw [metricRaw M:SL(2, ℂ)⊢ (↑M).map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M)⁻¹ᴴ M:SL(2, ℂ)⊢ (↑M).map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M)⁻¹ᴴ] M:SL(2, ℂ)⊢ (↑M).map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M)⁻¹ᴴ
rw [Lorentz.SL2C.inverse_coe, M:SL(2, ℂ)⊢ (↑M).map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M⁻¹)ᴴ M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M⁻¹)ᴴ eta_fin_two M.1 M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M⁻¹)ᴴ M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M⁻¹)ᴴ] M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M⁻¹)ᴴ
rw [SpecialLinearGroup.coe_inv, M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * (↑M).adjugateᴴ M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] Matrix.adjugate_fin_two, M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] = !![0, 1; -1, 0] * !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1]
eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᴴ M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1]] M:SL(2, ℂ)⊢ !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star * !![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1]
rw [eta_fin_two (!![M.1 0 0, M.1 0 1; M.1 1 0, M.1 1 1].map star) M:SL(2, ℂ)⊢ !![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] *
!![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] M:SL(2, ℂ)⊢ !![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] *
!![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1]] M:SL(2, ℂ)⊢ !![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] *
!![0, 1; -1, 0] =
!![0, 1; -1, 0] *
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1]
simp All goals completed! 🐙
lemma metricRaw_comm_star (M : SL(2,ℂ)) : metricRaw * M.1.map star = ((M.1)⁻¹)ᴴ * metricRaw := by M:SL(2, ℂ)⊢ metricRaw * (↑M).map star = (↑M)⁻¹ᴴ * metricRaw
rw [metricRaw M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * (↑M).map star = (↑M)⁻¹ᴴ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * (↑M).map star = (↑M)⁻¹ᴴ * !![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * (↑M).map star = (↑M)⁻¹ᴴ * !![0, 1; -1, 0]
rw [Lorentz.SL2C.inverse_coe, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * (↑M).map star = (↑M⁻¹)ᴴ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = (↑M⁻¹)ᴴ * !![0, 1; -1, 0] eta_fin_two M.1 M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = (↑M⁻¹)ᴴ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = (↑M⁻¹)ᴴ * !![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = (↑M⁻¹)ᴴ * !![0, 1; -1, 0]
rw [SpecialLinearGroup.coe_inv, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = (↑M).adjugateᴴ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0] Matrix.adjugate_fin_two, M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star = !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ * !![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0]
eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᴴ M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] * !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0]
rw [eta_fin_two (!![M.1 0 0, M.1 0 1; M.1 1 0, M.1 1 1].map star) M:SL(2, ℂ)⊢ !![0, 1; -1, 0] *
!![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] *
!![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0]] M:SL(2, ℂ)⊢ !![0, 1; -1, 0] *
!![!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 0 1;
!![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 0, !![↑M 0 0, ↑M 0 1; ↑M 1 0, ↑M 1 1].map star 1 1] =
!![!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 0 1;
!![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 0, !![↑M 1 1, -↑M 0 1; -↑M 1 0, ↑M 0 0]ᴴ 1 1] *
!![0, 1; -1, 0]
simp All goals completed! 🐙
The metric εᵃᵃ as an element of (leftHanded ⊗ leftHanded).V.
def leftMetricVal : LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl :=
leftLeftToMatrix.symm (- metricRaw)
Expansion of leftMetricVal into the left basis.
set_option backward.isDefEq.respectTransparency false in
lemma leftMetricVal_expand_tmul : leftMetricVal =
- LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 +
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 := by ⊢ leftMetricVal =
-LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0
simp only [leftMetricVal, Fin.isValue] ⊢ leftLeftToMatrix.symm (-metricRaw) =
-LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0
rw [leftLeftToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, (-metricRaw) i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
-LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 ⊢ ∑ i, ∑ j, (-metricRaw) i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
-LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0] ⊢ ∑ i, ∑ j, (-metricRaw) i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
-LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0
simp only [metricRaw, Matrix.neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one,
Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, neg_zero, zero_smul, zero_add,
neg_neg, one_smul, add_zero, add_left_inj] ⊢ -1 • LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 = -LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1
module All goals completed! 🐙
lemma leftMetricVal_expand_tmul' : leftMetricVal =
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0
- LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 := by ⊢ leftMetricVal =
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 - LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 rw [leftMetricVal_expand_tmul ⊢ -LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 =
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 - LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 ⊢ -LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 =
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 - LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1] ⊢ -LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 =
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 - LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1; abel All goals completed! 🐙
The metric εᵃᵃ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded,
making manifest its invariance under the action of SL(2,ℂ).
def leftMetric : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(LeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • leftMetricVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • leftMetricVal) =
(let a' := x;
a' • leftMetricVal) +
let a' := y;
a' • leftMetricVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • leftMetricVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • leftMetricVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • leftMetricVal = ((RingHom.id ℂ) m * x) • leftMetricVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • leftMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(LeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • leftMetricVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • leftMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((LeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • leftMetricVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • leftMetricVal =
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (x • leftMetricVal) M:SL(2, ℂ)x:ℂ⊢ x • leftMetricVal = (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (x • leftMetricVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • leftMetricVal = x • (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) leftMetricVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ leftMetricVal = (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) leftMetricVal
simp only [leftMetricVal, map_neg, neg_inj] M:SL(2, ℂ)x:ℂ⊢ leftLeftToMatrix.symm metricRaw =
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm metricRaw)
rw [leftLeftToMatrix_ρ_symm M:SL(2, ℂ)x:ℂ⊢ leftLeftToMatrix.symm metricRaw = leftLeftToMatrix.symm (↑M * metricRaw * (↑M)ᵀ) M:SL(2, ℂ)x:ℂ⊢ leftLeftToMatrix.symm metricRaw = leftLeftToMatrix.symm (↑M * metricRaw * (↑M)ᵀ)] M:SL(2, ℂ)x:ℂ⊢ leftLeftToMatrix.symm metricRaw = leftLeftToMatrix.symm (↑M * metricRaw * (↑M)ᵀ)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ metricRaw = ↑M * metricRaw * (↑M)ᵀ
rw [comm_metricRaw, M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M)⁻¹ᵀ * (↑M)ᵀ M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)ᵀ mul_assoc, M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M)⁻¹ᵀ * (↑M)ᵀ) M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)ᵀ ← @transpose_mul M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)ᵀ M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)ᵀ] M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)ᵀ
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
not_false_eq_true, mul_nonsing_inv, transpose_one, mul_one] All goals completed! 🐙lemma leftMetric_apply_one : leftMetric (1 : ℂ) = leftMetricVal := by ⊢ leftMetric 1 = leftMetricVal
change (1 : ℂ) • leftMetricVal = leftMetricVal ⊢ 1 • leftMetricVal = leftMetricVal
simp only [one_smul] All goals completed! 🐙
The metric εₐₐ as an element of (dualLeftHanded ⊗ dualLeftHanded).V.
def dualLeftMetricVal : (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl) :=
dualLeftdualLeftToMatrix.symm metricRaw
Expansion of dualLeftMetricVal into the left basis.
set_option backward.isDefEq.respectTransparency false in
lemma dualLeftMetricVal_expand_tmul : dualLeftMetricVal =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 := by ⊢ dualLeftMetricVal =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0
simp only [dualLeftMetricVal, Fin.isValue] ⊢ dualLeftdualLeftToMatrix.symm metricRaw =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0
rw [dualLeftdualLeftToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, metricRaw i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 ⊢ ∑ i, ∑ j, metricRaw i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0] ⊢ ∑ i, ∑ j, metricRaw i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0
simp only [metricRaw, of_apply, cons_val', empty_val', cons_val_fin_one, Fin.sum_univ_two,
Fin.isValue, cons_val_zero, cons_val_one, zero_smul, one_smul, zero_add, add_zero] ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 +
-1 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0
module All goals completed! 🐙
The metric εₐₐ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ dualLeftHanded ⊗ dualLeftHanded,
making manifest its invariance under the action of SL(2,ℂ).
def dualLeftMetric : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(DualLeftHandedWeyl.rep.tprod DualLeftHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • dualLeftMetricVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • dualLeftMetricVal) =
(let a' := x;
a' • dualLeftMetricVal) +
let a' := y;
a' • dualLeftMetricVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • dualLeftMetricVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • dualLeftMetricVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • dualLeftMetricVal = ((RingHom.id ℂ) m * x) • dualLeftMetricVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • dualLeftMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(DualLeftHandedWeyl.rep.tprod DualLeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualLeftMetricVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • dualLeftMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((DualLeftHandedWeyl.rep.tprod DualLeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualLeftMetricVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • dualLeftMetricVal =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M))
(x • dualLeftMetricVal) M:SL(2, ℂ)x:ℂ⊢ x • dualLeftMetricVal =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (x • dualLeftMetricVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • dualLeftMetricVal = x • (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) dualLeftMetricVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ dualLeftMetricVal = (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) dualLeftMetricVal
simp only [dualLeftMetricVal] M:SL(2, ℂ)x:ℂ⊢ dualLeftdualLeftToMatrix.symm metricRaw =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm metricRaw)
rw [dualLeftdualLeftToMatrix_ρ_symm M:SL(2, ℂ)x:ℂ⊢ dualLeftdualLeftToMatrix.symm metricRaw = dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * metricRaw * (↑M)⁻¹) M:SL(2, ℂ)x:ℂ⊢ dualLeftdualLeftToMatrix.symm metricRaw = dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * metricRaw * (↑M)⁻¹)] M:SL(2, ℂ)x:ℂ⊢ dualLeftdualLeftToMatrix.symm metricRaw = dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * metricRaw * (↑M)⁻¹)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ metricRaw = (↑M)⁻¹ᵀ * metricRaw * (↑M)⁻¹
rw [← metricRaw_comm, M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ↑M * (↑M)⁻¹ M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹) mul_assoc M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹) M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)] M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M * (↑M)⁻¹)
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
not_false_eq_true, mul_nonsing_inv, mul_one] All goals completed! 🐙lemma dualLeftMetric_apply_one : dualLeftMetric (1 : ℂ) = dualLeftMetricVal := by ⊢ dualLeftMetric 1 = dualLeftMetricVal
change (1 : ℂ) • dualLeftMetricVal = dualLeftMetricVal ⊢ 1 • dualLeftMetricVal = dualLeftMetricVal
simp only [one_smul] All goals completed! 🐙
The metric ε^{dot a}^{dot a} as an element of (rightHanded ⊗ rightHanded).V.
def rightMetricVal : (RightHandedWeyl ⊗[ℂ] RightHandedWeyl) :=
rightRightToMatrix.symm (- metricRaw)
Expansion of rightMetricVal into the left basis.
set_option backward.isDefEq.respectTransparency false in
lemma rightMetricVal_expand_tmul : rightMetricVal =
- RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 +
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 := by ⊢ rightMetricVal =
-RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0
simp only [rightMetricVal, Fin.isValue] ⊢ rightRightToMatrix.symm (-metricRaw) =
-RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0
rw [rightRightToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, (-metricRaw) i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
-RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 ⊢ ∑ i, ∑ j, (-metricRaw) i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
-RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0] ⊢ ∑ i, ∑ j, (-metricRaw) i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
-RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0
simp only [metricRaw, Matrix.neg_apply, of_apply, cons_val', empty_val', cons_val_fin_one,
Fin.sum_univ_two, Fin.isValue, cons_val_zero, cons_val_one, neg_zero, zero_smul, zero_add,
neg_neg, one_smul, add_zero, add_left_inj] ⊢ -1 • RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 = -RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
module All goals completed! 🐙
lemma rightMetricVal_expand_tmul' : rightMetricVal =
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0
- RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 := by ⊢ rightMetricVal =
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 - RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
rw [rightMetricVal_expand_tmul ⊢ -RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 =
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 - RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 ⊢ -RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 =
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 - RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1] ⊢ -RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 =
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 - RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
abel All goals completed! 🐙
The metric ε^{dot a}^{dot a} as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded,
making manifest its invariance under the action of SL(2,ℂ).
def rightMetric : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(RightHandedWeyl.rep.tprod RightHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • rightMetricVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • rightMetricVal) =
(let a' := x;
a' • rightMetricVal) +
let a' := y;
a' • rightMetricVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • rightMetricVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • rightMetricVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • rightMetricVal = ((RingHom.id ℂ) m * x) • rightMetricVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(RightHandedWeyl.rep.tprod RightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((RightHandedWeyl.rep.tprod RightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • rightMetricVal =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (x • rightMetricVal) M:SL(2, ℂ)x:ℂ⊢ x • rightMetricVal = (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (x • rightMetricVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • rightMetricVal = x • (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) rightMetricVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ rightMetricVal = (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) rightMetricVal
simp only [rightMetricVal, map_neg, neg_inj] M:SL(2, ℂ)x:ℂ⊢ rightRightToMatrix.symm metricRaw =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm metricRaw)
trans rightRightToMatrix.symm ((M.1).map star * metricRaw * ((M.1).map star)ᵀ) M:SL(2, ℂ)x:ℂ⊢ rightRightToMatrix.symm metricRaw = rightRightToMatrix.symm ((↑M).map star * metricRaw * ((↑M).map star)ᵀ)M:SL(2, ℂ)x:ℂ⊢ rightRightToMatrix.symm ((↑M).map star * metricRaw * ((↑M).map star)ᵀ) =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm metricRaw)
· M:SL(2, ℂ)x:ℂ⊢ rightRightToMatrix.symm metricRaw = rightRightToMatrix.symm ((↑M).map star * metricRaw * ((↑M).map star)ᵀ) apply congrArg M:SL(2, ℂ)x:ℂ⊢ metricRaw = (↑M).map star * metricRaw * ((↑M).map star)ᵀ
rw [star_comm_metricRaw, M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M)⁻¹ᴴ * ((↑M).map star)ᵀ M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ) mul_assoc M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ) M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)] M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
have h1 : ((M.1)⁻¹ᴴ * ((M.1).map star)ᵀ) = 1 := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(RightHandedWeyl.rep.tprod RightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • rightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
trans (M.1)⁻¹ᴴ * ((M.1))ᴴ M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = (↑M)⁻¹ᴴ * (↑M)ᴴM:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * (↑M)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
· M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = (↑M)⁻¹ᴴ * (↑M)ᴴ M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ) rfl All goals completed! 🐙 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
rw [← @conjTranspose_mul M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)] M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
not_false_eq_true, mul_nonsing_inv, conjTranspose_one] M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ) M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * ((↑M)⁻¹ᴴ * ((↑M).map star)ᵀ)
rw [h1 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * 1 M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * 1] M:SL(2, ℂ)x:ℂh1:(↑M)⁻¹ᴴ * ((↑M).map star)ᵀ = 1⊢ metricRaw = metricRaw * 1
simp All goals completed! 🐙
· M:SL(2, ℂ)x:ℂ⊢ rightRightToMatrix.symm ((↑M).map star * metricRaw * ((↑M).map star)ᵀ) =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm metricRaw) rw [← rightRightToMatrix_ρ_symm metricRaw M M:SL(2, ℂ)x:ℂ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm metricRaw) =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm metricRaw) All goals completed! 🐙] All goals completed! 🐙lemma rightMetric_apply_one : rightMetric (1 : ℂ) = rightMetricVal := by ⊢ rightMetric 1 = rightMetricVal
change (1 : ℂ) • rightMetricVal = rightMetricVal ⊢ 1 • rightMetricVal = rightMetricVal
simp only [one_smul] All goals completed! 🐙
The metric ε_{dot a}_{dot a} as an element of (dualRightHanded ⊗ dualRightHanded).V.
def dualRightMetricVal : DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl :=
dualRightDualRightToMatrix.symm (metricRaw)
Expansion of rightMetricVal into the left basis.
set_option backward.isDefEq.respectTransparency false in
lemma dualRightMetricVal_expand_tmul : dualRightMetricVal =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 := by ⊢ dualRightMetricVal =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0
simp only [dualRightMetricVal, Fin.isValue] ⊢ dualRightDualRightToMatrix.symm metricRaw =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0
rw [dualRightDualRightToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, metricRaw i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 ⊢ ∑ i, ∑ j, metricRaw i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0] ⊢ ∑ i, ∑ j, metricRaw i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0
simp only [metricRaw, of_apply, cons_val', empty_val', cons_val_fin_one, Fin.sum_univ_two,
Fin.isValue, cons_val_zero, cons_val_one, zero_smul, one_smul, zero_add, add_zero] ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 +
-1 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0
module All goals completed! 🐙
The metric ε_{dot a}_{dot a} as a morphism
𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ dualRightHanded ⊗ dualRightHanded,
making manifest its invariance under the action of SL(2,ℂ).
def dualRightMetric : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(DualRightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • dualRightMetricVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • dualRightMetricVal) =
(let a' := x;
a' • dualRightMetricVal) +
let a' := y;
a' • dualRightMetricVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • dualRightMetricVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • dualRightMetricVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • dualRightMetricVal = ((RingHom.id ℂ) m * x) • dualRightMetricVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(DualRightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((DualRightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • dualRightMetricVal =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M))
(x • dualRightMetricVal) M:SL(2, ℂ)x:ℂ⊢ x • dualRightMetricVal =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (x • dualRightMetricVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • dualRightMetricVal =
x • (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ dualRightMetricVal = (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal
trans dualRightDualRightToMatrix.symm
(((M.1)⁻¹).conjTranspose * metricRaw * (((M.1)⁻¹).conjTranspose)ᵀ) M:SL(2, ℂ)x:ℂ⊢ dualRightMetricVal = dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ)M:SL(2, ℂ)x:ℂ⊢ dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal
· M:SL(2, ℂ)x:ℂ⊢ dualRightMetricVal = dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ) rw [dualRightMetricVal M:SL(2, ℂ)x:ℂ⊢ dualRightDualRightToMatrix.symm metricRaw = dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ) M:SL(2, ℂ)x:ℂ⊢ dualRightDualRightToMatrix.symm metricRaw = dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ)] M:SL(2, ℂ)x:ℂ⊢ dualRightDualRightToMatrix.symm metricRaw = dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ metricRaw = (↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ
rw [← metricRaw_comm_star, M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * (↑M).map star * (↑M)⁻¹ᴴᵀ M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ) mul_assoc M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ) M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)] M:SL(2, ℂ)x:ℂ⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
have h1 : ((M.1).map star * (M.1)⁻¹ᴴᵀ) = 1 := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(DualRightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualRightMetricVal,
map_add' := ⋯, map_smul' := ⋯ } M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
refine transpose_eq_one.mp ?_ M:SL(2, ℂ)x:ℂ⊢ ((↑M).map star * (↑M)⁻¹ᴴᵀ)ᵀ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
rw [@transpose_mul M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴᵀᵀ * ((↑M).map star)ᵀ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴᵀᵀ * ((↑M).map star)ᵀ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)] M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴᵀᵀ * ((↑M).map star)ᵀ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
simp only [transpose_transpose, RCLike.star_def] M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * ((↑M).map ⇑(starRingEnd ℂ))ᵀ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
change (M.1)⁻¹ᴴ * (M.1)ᴴ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * (↑M)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
rw [← @conjTranspose_mul M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)] M:SL(2, ℂ)x:ℂ⊢ (↑M * (↑M)⁻¹)ᴴ = 1 M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
simp M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ) M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * ((↑M).map star * (↑M)⁻¹ᴴᵀ)
rw [h1, M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw * 1 All goals completed! 🐙 mul_one M:SL(2, ℂ)x:ℂh1:(↑M).map star * (↑M)⁻¹ᴴᵀ = 1⊢ metricRaw = metricRaw All goals completed! 🐙] All goals completed! 🐙
· M:SL(2, ℂ)x:ℂ⊢ dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * metricRaw * (↑M)⁻¹ᴴᵀ) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal rw [← dualRightDualRightToMatrix_ρ_symm metricRaw M M:SL(2, ℂ)x:ℂ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M))
(dualRightDualRightToMatrix.symm metricRaw) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal M:SL(2, ℂ)x:ℂ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M))
(dualRightDualRightToMatrix.symm metricRaw) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal] M:SL(2, ℂ)x:ℂ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M))
(dualRightDualRightToMatrix.symm metricRaw) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) dualRightMetricVal
rfl All goals completed! 🐙lemma dualRightMetric_apply_one : dualRightMetric (1 : ℂ) = dualRightMetricVal := by ⊢ dualRightMetric 1 = dualRightMetricVal
change (1 : ℂ) • dualRightMetricVal = dualRightMetricVal ⊢ 1 • dualRightMetricVal = dualRightMetricVal
simp only [one_smul] All goals completed! 🐙Contraction of metrics
set_option backward.isDefEq.respectTransparency false in
lemma leftDualContraction_apply_metric :
(TensorProduct.comm ℂ _ _ <|
(TensorProduct.lid ℂ _).lTensor _ <|
(leftDualContraction.toLinearMap.rTensor _).lTensor _ <|
(TensorProduct.assoc ℂ _ _ _).symm.toLinearMap.lTensor _<|
TensorProduct.assoc ℂ _ _ (_ ⊗[ℂ] _) <|
(leftMetric 1) ⊗ₜ[ℂ] (dualLeftMetric 1)) = dualLeftLeftUnit (1 : ℂ) := by ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetric 1 ⊗ₜ[ℂ] dualLeftMetric 1))))) =
dualLeftLeftUnit 1
rw [leftMetric_apply_one, ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetricVal ⊗ₜ[ℂ] dualLeftMetric 1))))) =
dualLeftLeftUnit 1 ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetricVal ⊗ₜ[ℂ] dualLeftMetricVal))))) =
dualLeftLeftUnit 1 dualLeftMetric_apply_one ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetricVal ⊗ₜ[ℂ] dualLeftMetricVal))))) =
dualLeftLeftUnit 1 ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetricVal ⊗ₜ[ℂ] dualLeftMetricVal))))) =
dualLeftLeftUnit 1] ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
(leftMetricVal ⊗ₜ[ℂ] dualLeftMetricVal))))) =
dualLeftLeftUnit 1
rw [leftMetricVal_expand_tmul', ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
((LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) ⊗ₜ[ℂ]
dualLeftMetricVal))))) =
dualLeftLeftUnit 1 ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
((LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0)))))) =
dualLeftLeftUnit 1 dualLeftMetricVal_expand_tmul ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
((LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0)))))) =
dualLeftLeftUnit 1 ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
((LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0)))))) =
dualLeftLeftUnit 1] ⊢ (TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl)
((LinearEquiv.lTensor LeftHandedWeyl (TensorProduct.lid ℂ DualLeftHandedWeyl))
((LinearMap.lTensor LeftHandedWeyl (LinearMap.rTensor DualLeftHandedWeyl leftDualContraction.toLinearMap))
((LinearMap.lTensor LeftHandedWeyl
↑(TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl DualLeftHandedWeyl).symm)
((TensorProduct.assoc ℂ LeftHandedWeyl LeftHandedWeyl (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl))
((LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0)))))) =
dualLeftLeftUnit 1
simp only [Fin.isValue, tmul_sub, sub_tmul, map_sub, assoc_tmul, LinearMap.lTensor_tmul,
LinearEquiv.coe_coe, assoc_symm_tmul, LinearMap.rTensor_tmul,
Representation.IntertwiningMap.coe_toLinearMap, LinearEquiv.lTensor_tmul, lid_tmul, tmul_smul,
map_smul, comm_tmul] ⊢ leftDualContraction (LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) •
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
leftDualContraction (LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) •
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(leftDualContraction (LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1) •
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
leftDualContraction (LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1) •
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
dualLeftLeftUnit 1
simp only [leftDualContraction_basis] ⊢ (if True then 1 else 0) • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
(if ↑1 = ↑0 then 1 else 0) • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
((if ↑0 = ↑1 then 1 else 0) • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
(if True then 1 else 0) • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
dualLeftLeftUnit 1
simp only [Fin.isValue, Fin.val_one, Fin.val_zero, one_ne_zero, ↓reduceIte, one_smul, zero_ne_one] ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
dualLeftLeftUnit 1
rw [dualLeftLeftUnit_apply_one, ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
dualLeftLeftUnitVal ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 dualLeftLeftUnitVal_expand_tmul ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1] ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1
rw [add_comm ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0] ⊢ DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 - 0 • DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
(0 • DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) =
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 + DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0
module All goals completed! 🐙
lemma dualLeftContraction_apply_metric :
(TensorProduct.comm ℂ _ _ <|
(TensorProduct.lid ℂ _).lTensor _ <|
(dualLeftContraction.toLinearMap.rTensor _).lTensor _ <|
(TensorProduct.assoc ℂ _ _ _).symm.toLinearMap.lTensor _<|
TensorProduct.assoc ℂ _ _ (_ ⊗[ℂ] _) <|
(dualLeftMetric 1) ⊗ₜ[ℂ] (leftMetric 1)) = leftDualLeftUnit (1 : ℂ) := by ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetric 1 ⊗ₜ[ℂ] leftMetric 1))))) =
leftDualLeftUnit 1
rw [leftMetric_apply_one, ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetric 1 ⊗ₜ[ℂ] leftMetricVal))))) =
leftDualLeftUnit 1 ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetricVal ⊗ₜ[ℂ] leftMetricVal))))) =
leftDualLeftUnit 1 dualLeftMetric_apply_one ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetricVal ⊗ₜ[ℂ] leftMetricVal))))) =
leftDualLeftUnit 1 ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetricVal ⊗ₜ[ℂ] leftMetricVal))))) =
leftDualLeftUnit 1] ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetricVal ⊗ₜ[ℂ] leftMetricVal))))) =
leftDualLeftUnit 1
rw [leftMetricVal_expand_tmul', ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
(dualLeftMetricVal ⊗ₜ[ℂ]
(LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)))))) =
leftDualLeftUnit 1 ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
((DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) ⊗ₜ[ℂ]
(LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)))))) =
leftDualLeftUnit 1 dualLeftMetricVal_expand_tmul ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
((DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) ⊗ₜ[ℂ]
(LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)))))) =
leftDualLeftUnit 1 ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
((DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) ⊗ₜ[ℂ]
(LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)))))) =
leftDualLeftUnit 1] ⊢ (TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
((LinearEquiv.lTensor DualLeftHandedWeyl (TensorProduct.lid ℂ LeftHandedWeyl))
((LinearMap.lTensor DualLeftHandedWeyl (LinearMap.rTensor LeftHandedWeyl dualLeftContraction.toLinearMap))
((LinearMap.lTensor DualLeftHandedWeyl
↑(TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl LeftHandedWeyl).symm)
((TensorProduct.assoc ℂ DualLeftHandedWeyl DualLeftHandedWeyl (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl))
((DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0) ⊗ₜ[ℂ]
(LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 -
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)))))) =
leftDualLeftUnit 1
simp only [Fin.isValue, tmul_sub, sub_tmul, map_sub, assoc_tmul, LinearMap.lTensor_tmul,
LinearEquiv.coe_coe, assoc_symm_tmul, LinearMap.rTensor_tmul,
Representation.IntertwiningMap.coe_toLinearMap, LinearEquiv.lTensor_tmul, lid_tmul, tmul_smul,
map_smul, comm_tmul] ⊢ dualLeftContraction (DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) •
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 -
dualLeftContraction (DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1) •
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
(dualLeftContraction (DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) •
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 -
dualLeftContraction (DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0) •
LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1) =
leftDualLeftUnit 1
simp only [dualLeftContraction_basis] ⊢ (if True then 1 else 0) • LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 -
(if ↑0 = ↑1 then 1 else 0) • LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 -
((if ↑1 = ↑0 then 1 else 0) • LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 -
(if True then 1 else 0) • LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1) =
leftDualLeftUnit 1
simp only [Fin.isValue, Fin.coe_ofNat_eq_mod, Nat.mod_succ, ↓reduceIte, one_smul, Nat.zero_mod,
zero_ne_one, zero_smul, sub_zero, one_ne_zero, zero_sub, sub_neg_eq_add] ⊢ LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 =
leftDualLeftUnit 1
rw [leftDualLeftUnit_apply_one, ⊢ LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 =
leftDualLeftUnitVal All goals completed! 🐙 leftDualLeftUnitVal_expand_tmul ⊢ LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 =
LeftHandedWeyl.basis 0 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[ℂ] DualLeftHandedWeyl.basis 1 All goals completed! 🐙] All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma rightDualContraction_apply_metric :
(TensorProduct.comm ℂ _ _ <|
(TensorProduct.lid ℂ _).lTensor _ <|
(rightDualContraction.toLinearMap.rTensor _).lTensor _ <|
(TensorProduct.assoc ℂ _ _ _).symm.toLinearMap.lTensor _<|
TensorProduct.assoc ℂ _ _ (_ ⊗[ℂ] _) <|
(rightMetric 1) ⊗ₜ[ℂ] (dualRightMetric 1)) = dualRightRightUnit (1 : ℂ) := by ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetric 1 ⊗ₜ[ℂ] dualRightMetric 1))))) =
dualRightRightUnit 1
rw [rightMetric_apply_one, ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetricVal ⊗ₜ[ℂ] dualRightMetric 1))))) =
dualRightRightUnit 1 ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetricVal ⊗ₜ[ℂ] dualRightMetricVal))))) =
dualRightRightUnit 1 dualRightMetric_apply_one ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetricVal ⊗ₜ[ℂ] dualRightMetricVal))))) =
dualRightRightUnit 1 ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetricVal ⊗ₜ[ℂ] dualRightMetricVal))))) =
dualRightRightUnit 1] ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(rightMetricVal ⊗ₜ[ℂ] dualRightMetricVal))))) =
dualRightRightUnit 1
rw [rightMetricVal_expand_tmul', ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
((RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) ⊗ₜ[ℂ]
dualRightMetricVal))))) =
dualRightRightUnit 1 ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
((RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0)))))) =
dualRightRightUnit 1 dualRightMetricVal_expand_tmul ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
((RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0)))))) =
dualRightRightUnit 1 ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
((RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0)))))) =
dualRightRightUnit 1] ⊢ (TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl)
((LinearEquiv.lTensor RightHandedWeyl (TensorProduct.lid ℂ DualRightHandedWeyl))
((LinearMap.lTensor RightHandedWeyl (LinearMap.rTensor DualRightHandedWeyl rightDualContraction.toLinearMap))
((LinearMap.lTensor RightHandedWeyl
↑(TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl DualRightHandedWeyl).symm)
((TensorProduct.assoc ℂ RightHandedWeyl RightHandedWeyl (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
((RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) ⊗ₜ[ℂ]
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0)))))) =
dualRightRightUnit 1
simp only [Fin.isValue, tmul_sub, sub_tmul, map_sub, assoc_tmul, LinearMap.lTensor_tmul,
LinearEquiv.coe_coe, assoc_symm_tmul, LinearMap.rTensor_tmul,
Representation.IntertwiningMap.coe_toLinearMap, LinearEquiv.lTensor_tmul, lid_tmul, tmul_smul,
map_smul, comm_tmul] ⊢ rightDualContraction (RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) •
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
rightDualContraction (RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) •
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(rightDualContraction (RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1) •
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
rightDualContraction (RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1) •
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
dualRightRightUnit 1
simp only [rightDualContraction_basis] ⊢ (if True then 1 else 0) • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
(if ↑1 = ↑0 then 1 else 0) • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
((if ↑0 = ↑1 then 1 else 0) • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
(if True then 1 else 0) • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
dualRightRightUnit 1
simp only [Fin.isValue, Fin.coe_ofNat_eq_mod, Nat.mod_succ, Nat.zero_mod, one_ne_zero, ↓reduceIte,
one_smul, zero_ne_one] ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
dualRightRightUnit 1
rw [dualRightRightUnit_apply_one, ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
dualRightRightUnitVal ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 dualRightRightUnitVal_expand_tmul ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1] ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
rw [add_comm ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0] ⊢ DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
0 • DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
(0 • DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) =
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 + DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0
module All goals completed! 🐙
lemma dualRightContraction_apply_metric :
(TensorProduct.comm ℂ _ _ <|
(TensorProduct.lid ℂ _).lTensor _ <|
(dualRightContraction.toLinearMap.rTensor _).lTensor _ <|
(TensorProduct.assoc ℂ _ _ _).symm.toLinearMap.lTensor _<|
TensorProduct.assoc ℂ _ _ (_ ⊗[ℂ] _) <|
(dualRightMetric 1) ⊗ₜ[ℂ] (rightMetric 1)) = rightDualRightUnit (1 : ℂ) := by ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetric 1 ⊗ₜ[ℂ] rightMetric 1))))) =
rightDualRightUnit 1
rw [rightMetric_apply_one, ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetric 1 ⊗ₜ[ℂ] rightMetricVal))))) =
rightDualRightUnit 1 ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetricVal ⊗ₜ[ℂ] rightMetricVal))))) =
rightDualRightUnit 1 dualRightMetric_apply_one ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetricVal ⊗ₜ[ℂ] rightMetricVal))))) =
rightDualRightUnit 1 ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetricVal ⊗ₜ[ℂ] rightMetricVal))))) =
rightDualRightUnit 1] ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetricVal ⊗ₜ[ℂ] rightMetricVal))))) =
rightDualRightUnit 1
rw [rightMetricVal_expand_tmul', ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
(dualRightMetricVal ⊗ₜ[ℂ]
(RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)))))) =
rightDualRightUnit 1 ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
((DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) ⊗ₜ[ℂ]
(RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)))))) =
rightDualRightUnit 1 dualRightMetricVal_expand_tmul ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
((DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) ⊗ₜ[ℂ]
(RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)))))) =
rightDualRightUnit 1 ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
((DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) ⊗ₜ[ℂ]
(RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)))))) =
rightDualRightUnit 1] ⊢ (TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
((LinearEquiv.lTensor DualRightHandedWeyl (TensorProduct.lid ℂ RightHandedWeyl))
((LinearMap.lTensor DualRightHandedWeyl (LinearMap.rTensor RightHandedWeyl dualRightContraction.toLinearMap))
((LinearMap.lTensor DualRightHandedWeyl
↑(TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl RightHandedWeyl).symm)
((TensorProduct.assoc ℂ DualRightHandedWeyl DualRightHandedWeyl (RightHandedWeyl ⊗[ℂ] RightHandedWeyl))
((DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0) ⊗ₜ[ℂ]
(RightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 -
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)))))) =
rightDualRightUnit 1
simp only [Fin.isValue, tmul_sub, sub_tmul, map_sub, assoc_tmul, LinearMap.lTensor_tmul,
LinearEquiv.coe_coe, assoc_symm_tmul, LinearMap.rTensor_tmul,
Representation.IntertwiningMap.coe_toLinearMap, LinearEquiv.lTensor_tmul, lid_tmul, tmul_smul,
map_smul, comm_tmul] ⊢ dualRightContraction (DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) •
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 -
dualRightContraction (DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 1) •
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
(dualRightContraction (DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) •
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 -
dualRightContraction (DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0) •
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1) =
rightDualRightUnit 1
simp only [dualRightContraction_basis] ⊢ (if True then 1 else 0) • RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 -
(if ↑0 = ↑1 then 1 else 0) • RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 -
((if ↑1 = ↑0 then 1 else 0) • RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 -
(if True then 1 else 0) • RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1) =
rightDualRightUnit 1
simp only [Fin.isValue, Fin.coe_ofNat_eq_mod, Nat.mod_succ, ↓reduceIte, one_smul, Nat.zero_mod,
zero_ne_one, zero_smul, sub_zero, one_ne_zero, zero_sub, sub_neg_eq_add] ⊢ RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 =
rightDualRightUnit 1
rw [rightDualRightUnit_apply_one, ⊢ RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 =
rightDualRightUnitVal All goals completed! 🐙 rightDualRightUnitVal_expand_tmul ⊢ RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 All goals completed! 🐙] All goals completed! 🐙