2024-04-23 16:00:06 -04:00
|
|
|
|
/-
|
|
|
|
|
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
|
|
|
|
|
Released under Apache 2.0 license.
|
|
|
|
|
Authors: Joseph Tooby-Smith
|
|
|
|
|
-/
|
|
|
|
|
import Mathlib.LinearAlgebra.UnitaryGroup
|
|
|
|
|
import Mathlib.Data.Complex.Exponential
|
|
|
|
|
import Mathlib.Tactic.Polyrith
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-!
|
|
|
|
|
# The CKM Matrix
|
|
|
|
|
|
2024-05-20 00:19:36 +02:00
|
|
|
|
The definition of the type of CKM matrices as unitary $3×3$-matrices.
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
An equivalence relation on CKM matrices is defined, where two matrices are equivalent if they are
|
|
|
|
|
related by phase shifts.
|
|
|
|
|
|
|
|
|
|
The notation `[V]ud` etc can be used for the elements of a CKM matrix, and
|
|
|
|
|
`[V]ud|us` etc for the ratios of elements.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
|
|
|
|
|
open Matrix Complex
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- Given three real numbers `a b c` the complex matrix with `exp (I * a)` etc on the
|
|
|
|
|
leading diagonal. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
def phaseShiftMatrix (a b c : ℝ) : Matrix (Fin 3) (Fin 3) ℂ :=
|
2024-04-29 08:13:52 -04:00
|
|
|
|
![![cexp (I * a), 0, 0], ![0, cexp (I * b), 0], ![0, 0, cexp (I * c)]]
|
2024-04-23 16:00:06 -04:00
|
|
|
|
|
|
|
|
|
lemma phaseShiftMatrix_one : phaseShiftMatrix 0 0 0 = 1 := by
|
|
|
|
|
ext i j
|
|
|
|
|
fin_cases i <;> fin_cases j <;>
|
|
|
|
|
simp [Matrix.one_apply, phaseShiftMatrix]
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
lemma phaseShiftMatrix_star (a b c : ℝ) :
|
|
|
|
|
(phaseShiftMatrix a b c)ᴴ = phaseShiftMatrix (- a) (- b) (- c) := by
|
|
|
|
|
funext i j
|
|
|
|
|
fin_cases i <;> fin_cases j <;>
|
|
|
|
|
simp [← exp_conj, conj_ofReal]
|
|
|
|
|
rfl
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
lemma phaseShiftMatrix_mul (a b c d e f : ℝ) :
|
|
|
|
|
phaseShiftMatrix a b c * phaseShiftMatrix d e f = phaseShiftMatrix (a + d) (b + e) (c + f) := by
|
|
|
|
|
ext i j
|
|
|
|
|
fin_cases i <;> fin_cases j <;>
|
|
|
|
|
simp [Matrix.mul_apply, Fin.sum_univ_three]
|
|
|
|
|
any_goals rw [mul_add, exp_add]
|
|
|
|
|
change cexp (I * ↑c) * 0 = 0
|
|
|
|
|
simp
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- Given three real numbers `a b c` the unitary matrix with `exp (I * a)` etc on the
|
|
|
|
|
leading diagonal. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simps!]
|
|
|
|
|
def phaseShift (a b c : ℝ) : unitaryGroup (Fin 3) ℂ :=
|
|
|
|
|
⟨phaseShiftMatrix a b c,
|
|
|
|
|
by
|
|
|
|
|
rw [mem_unitaryGroup_iff]
|
|
|
|
|
change _ * (phaseShiftMatrix a b c)ᴴ = 1
|
|
|
|
|
rw [phaseShiftMatrix_star, phaseShiftMatrix_mul, ← phaseShiftMatrix_one]
|
|
|
|
|
simp only [phaseShiftMatrix, add_right_neg, ofReal_zero, mul_zero, exp_zero]⟩
|
|
|
|
|
|
|
|
|
|
lemma phaseShift_coe_matrix (a b c : ℝ) : ↑(phaseShift a b c) = phaseShiftMatrix a b c := rfl
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The equivalence relation between CKM matrices. -/
|
2024-06-26 11:54:02 -04:00
|
|
|
|
def PhaseShiftRelation (U V : unitaryGroup (Fin 3) ℂ) : Prop :=
|
2024-04-23 16:00:06 -04:00
|
|
|
|
∃ a b c e f g , U = phaseShift a b c * V * phaseShift e f g
|
|
|
|
|
|
2024-06-26 11:54:02 -04:00
|
|
|
|
lemma phaseShiftRelation_refl (U : unitaryGroup (Fin 3) ℂ) : PhaseShiftRelation U U := by
|
2024-04-23 16:00:06 -04:00
|
|
|
|
use 0, 0, 0, 0, 0, 0
|
|
|
|
|
rw [Subtype.ext_iff_val]
|
|
|
|
|
simp only [Submonoid.coe_mul, phaseShift_coe_matrix, ofReal_zero, mul_zero, exp_zero]
|
|
|
|
|
rw [phaseShiftMatrix_one]
|
|
|
|
|
simp only [one_mul, mul_one]
|
|
|
|
|
|
|
|
|
|
lemma phaseShiftRelation_symm {U V : unitaryGroup (Fin 3) ℂ} :
|
2024-06-26 11:54:02 -04:00
|
|
|
|
PhaseShiftRelation U V → PhaseShiftRelation V U := by
|
2024-04-23 16:00:06 -04:00
|
|
|
|
intro h
|
|
|
|
|
obtain ⟨a, b, c, e, f, g, h⟩ := h
|
|
|
|
|
use (- a), (- b), (- c), (- e), (- f), (- g)
|
|
|
|
|
rw [Subtype.ext_iff_val]
|
|
|
|
|
rw [h]
|
|
|
|
|
repeat rw [mul_assoc]
|
|
|
|
|
simp only [Submonoid.coe_mul, phaseShift_coe_matrix, ofReal_neg, mul_neg]
|
|
|
|
|
rw [phaseShiftMatrix_mul]
|
|
|
|
|
repeat rw [← mul_assoc]
|
|
|
|
|
simp only [phaseShiftMatrix_mul, add_left_neg, phaseShiftMatrix_one, one_mul, add_right_neg,
|
|
|
|
|
mul_one]
|
|
|
|
|
|
|
|
|
|
lemma phaseShiftRelation_trans {U V W : unitaryGroup (Fin 3) ℂ} :
|
2024-06-26 11:54:02 -04:00
|
|
|
|
PhaseShiftRelation U V → PhaseShiftRelation V W → PhaseShiftRelation U W := by
|
2024-04-23 16:00:06 -04:00
|
|
|
|
intro hUV hVW
|
|
|
|
|
obtain ⟨a, b, c, e, f, g, hUV⟩ := hUV
|
|
|
|
|
obtain ⟨d, i, j, k, l, m, hVW⟩ := hVW
|
|
|
|
|
use (a + d), (b + i), (c + j), (e + k), (f + l), (g + m)
|
|
|
|
|
rw [Subtype.ext_iff_val]
|
|
|
|
|
rw [hUV, hVW]
|
|
|
|
|
simp only [Submonoid.coe_mul, phaseShift_coe_matrix]
|
|
|
|
|
repeat rw [mul_assoc]
|
|
|
|
|
rw [phaseShiftMatrix_mul]
|
|
|
|
|
repeat rw [← mul_assoc]
|
|
|
|
|
rw [phaseShiftMatrix_mul]
|
|
|
|
|
rw [add_comm k e, add_comm l f, add_comm m g]
|
|
|
|
|
|
|
|
|
|
|
2024-06-26 11:54:02 -04:00
|
|
|
|
lemma phaseShiftRelation_equiv : Equivalence PhaseShiftRelation where
|
2024-04-23 16:00:06 -04:00
|
|
|
|
refl := phaseShiftRelation_refl
|
|
|
|
|
symm := phaseShiftRelation_symm
|
|
|
|
|
trans := phaseShiftRelation_trans
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The type of CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
def CKMMatrix : Type := unitaryGroup (Fin 3) ℂ
|
|
|
|
|
|
2024-04-26 10:32:03 -04:00
|
|
|
|
lemma CKMMatrix_ext {U V : CKMMatrix} (h : U.val = V.val) : U = V := by
|
|
|
|
|
cases U; cases V
|
|
|
|
|
simp at h
|
|
|
|
|
subst h
|
|
|
|
|
rfl
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `ud`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ud_element) "[" V "]ud" => V.1 0 0
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `us`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := us_element) "[" V "]us" => V.1 0 1
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `ub`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ub_element) "[" V "]ub" => V.1 0 2
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `cd`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := cd_element) "[" V "]cd" => V.1 1 0
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `cs`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := cs_element) "[" V "]cs" => V.1 1 1
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `cb`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := cb_element) "[" V "]cb" => V.1 1 2
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `td`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := td_element) "[" V "]td" => V.1 2 0
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `ts`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ts_element) "[" V "]ts" => V.1 2 1
|
2024-04-29 10:42:44 -04:00
|
|
|
|
|
|
|
|
|
/-- The `tb`th element of the CKM matrix. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := tb_element) "[" V "]tb" => V.1 2 2
|
|
|
|
|
|
2024-06-26 11:54:02 -04:00
|
|
|
|
instance CKMMatrixSetoid : Setoid CKMMatrix := ⟨PhaseShiftRelation, phaseShiftRelation_equiv⟩
|
2024-04-23 16:00:06 -04:00
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The matrix obtained from `V` by shifting the phases of the fermions. -/
|
2024-04-26 10:32:03 -04:00
|
|
|
|
@[simps!]
|
|
|
|
|
def phaseShiftApply (V : CKMMatrix) (a b c d e f : ℝ) : CKMMatrix :=
|
|
|
|
|
phaseShift a b c * ↑V * phaseShift d e f
|
|
|
|
|
|
|
|
|
|
namespace phaseShiftApply
|
|
|
|
|
lemma equiv (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
V ≈ phaseShiftApply V a b c d e f := by
|
|
|
|
|
symm
|
|
|
|
|
use a, b, c, d, e, f
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
lemma ud (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 0 0 = cexp (a * I + d * I) * V.1 0 0 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_cons, zero_mul, add_zero, cons_val_two, tail_cons, head_fin_const, mul_zero,
|
|
|
|
|
tail_val', head_val']
|
2024-04-26 10:32:03 -04:00
|
|
|
|
change _ + _ * _ * 0 = _
|
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma us (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 0 1 = cexp (a * I + e * I) * V.1 0 1 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_cons, zero_mul, add_zero, cons_val_two, tail_cons, mul_zero, zero_add,
|
|
|
|
|
head_fin_const]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma ub (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 0 2 = cexp (a * I + f * I) * V.1 0 2 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_cons, zero_mul, add_zero, cons_val_two, tail_cons, mul_zero, head_fin_const,
|
|
|
|
|
zero_add]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma cd (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 1 0= cexp (b * I + d * I) * V.1 1 0 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_fin_const, zero_mul, head_cons, zero_add, cons_val_two, tail_cons, add_zero,
|
|
|
|
|
mul_zero, tail_val', head_val']
|
2024-04-26 10:32:03 -04:00
|
|
|
|
change _ + _ * _ * 0 = _
|
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma cs (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 1 1 = cexp (b * I + e * I) * V.1 1 1 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_fin_const, zero_mul, head_cons, zero_add, cons_val_two, tail_cons, add_zero,
|
|
|
|
|
mul_zero]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma cb (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 1 2 = cexp (b * I + f * I) * V.1 1 2 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_one, head_fin_const, zero_mul, head_cons, zero_add, cons_val_two, tail_cons, add_zero,
|
|
|
|
|
mul_zero]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma td (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 2 0= cexp (c * I + d * I) * V.1 2 0 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_two, tail_val', head_val', cons_val_one, head_cons, tail_cons, head_fin_const,
|
|
|
|
|
zero_mul, add_zero, mul_zero]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
change (0 * _ + _ ) * _ + (0 * _ + _ ) * 0 = _
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, zero_mul, zero_add, mul_zero, add_zero]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma ts (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 2 1 = cexp (c * I + e * I) * V.1 2 1 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_two, tail_val', head_val', cons_val_one, head_cons, tail_cons, head_fin_const,
|
|
|
|
|
zero_mul, add_zero, mul_zero, zero_add]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
change (0 * _ + _) * _ = _
|
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
lemma tb (V : CKMMatrix) (a b c d e f : ℝ) :
|
|
|
|
|
(phaseShiftApply V a b c d e f).1 2 2 = cexp (c * I + f * I) * V.1 2 2 := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, phaseShiftApply_coe]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three, Fin.sum_univ_three]
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one, vecCons_const,
|
|
|
|
|
cons_val_two, tail_val', head_val', cons_val_one, head_cons, tail_cons, head_fin_const,
|
|
|
|
|
zero_mul, add_zero, mul_zero, zero_add]
|
2024-04-26 10:32:03 -04:00
|
|
|
|
change (0 * _ + _) * _ = _
|
|
|
|
|
rw [exp_add]
|
|
|
|
|
ring_nf
|
|
|
|
|
|
|
|
|
|
end phaseShiftApply
|
|
|
|
|
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The aboslute value of the `(i,j)`th element of `V`. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
def VAbs' (V : unitaryGroup (Fin 3) ℂ) (i j : Fin 3) : ℝ := Complex.abs (V i j)
|
|
|
|
|
|
|
|
|
|
lemma VAbs'_equiv (i j : Fin 3) (V U : CKMMatrix) (h : V ≈ U) :
|
|
|
|
|
VAbs' V i j = VAbs' U i j := by
|
2024-04-29 10:42:44 -04:00
|
|
|
|
simp only [VAbs']
|
2024-04-23 16:00:06 -04:00
|
|
|
|
obtain ⟨a, b, c, e, f, g, h⟩ := h
|
|
|
|
|
rw [h]
|
|
|
|
|
simp only [Submonoid.coe_mul, phaseShift_coe_matrix]
|
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, Fin.sum_univ_three]
|
|
|
|
|
rw [mul_apply, mul_apply, Fin.sum_univ_three, Fin.sum_univ_three]
|
|
|
|
|
simp only [phaseShiftMatrix, Fin.isValue, cons_val', cons_val_zero, empty_val', cons_val_fin_one,
|
|
|
|
|
vecCons_const, cons_val_one, head_cons, zero_mul, add_zero, cons_val_two, tail_cons,
|
|
|
|
|
head_fin_const, mul_zero]
|
|
|
|
|
fin_cases i <;> fin_cases j <;>
|
|
|
|
|
simp [Complex.abs_exp]
|
|
|
|
|
all_goals change Complex.abs (0 * _ + _) = _
|
|
|
|
|
all_goals simp [Complex.abs_exp]
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `(i,j)`th any representative of `⟦V⟧`. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
def VAbs (i j : Fin 3) : Quotient CKMMatrixSetoid → ℝ :=
|
|
|
|
|
Quotient.lift (fun V => VAbs' V i j) (VAbs'_equiv i j)
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `ud`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VudAbs := VAbs 0 0
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `us`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VusAbs := VAbs 0 1
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `ub`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VubAbs := VAbs 0 2
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `cd`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VcdAbs := VAbs 1 0
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `cs`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VcsAbs := VAbs 1 1
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `cb`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VcbAbs := VAbs 1 2
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `td`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VtdAbs := VAbs 2 0
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `ts`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VtsAbs := VAbs 2 1
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The absolute value of the `tb`th element of a representative of an equivalence class of
|
|
|
|
|
CKM matrices. -/
|
2024-04-23 16:00:06 -04:00
|
|
|
|
@[simp]
|
|
|
|
|
abbrev VtbAbs := VAbs 2 2
|
|
|
|
|
|
|
|
|
|
|
2024-04-29 08:13:52 -04:00
|
|
|
|
namespace CKMMatrix
|
|
|
|
|
open ComplexConjugate
|
2024-04-23 16:00:06 -04:00
|
|
|
|
|
|
|
|
|
|
2024-04-29 08:13:52 -04:00
|
|
|
|
section ratios
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ub` and `ud` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rubud (V : CKMMatrix) : ℂ := [V]ub / [V]ud
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ub` and `ud` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ub_ud_ratio) "[" V "]ub|ud" => Rubud V
|
2024-04-29 09:22:32 -04:00
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `us` and `ud` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rusud (V : CKMMatrix) : ℂ := [V]us / [V]ud
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `us` and `ud` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := us_ud_ratio) "[" V "]us|ud" => Rusud V
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ud` and `us` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rudus (V : CKMMatrix) : ℂ := [V]ud / [V]us
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ud` and `us` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ud_us_ratio) "[" V "]ud|us" => Rudus V
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ub` and `us` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rubus (V : CKMMatrix) : ℂ := [V]ub / [V]us
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `ub` and `us` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := ub_us_ratio) "[" V "]ub|us" => Rubus V
|
2024-04-29 09:22:32 -04:00
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `cd` and `cb` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rcdcb (V : CKMMatrix) : ℂ := [V]cd / [V]cb
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `cd` and `cb` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := cd_cb_ratio) "[" V "]cd|cb" => Rcdcb V
|
|
|
|
|
|
|
|
|
|
lemma Rcdcb_mul_cb {V : CKMMatrix} (h : [V]cb ≠ 0): [V]cd = Rcdcb V * [V]cb := by
|
|
|
|
|
rw [Rcdcb]
|
|
|
|
|
exact (div_mul_cancel₀ (V.1 1 0) h).symm
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `cs` and `cb` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
def Rcscb (V : CKMMatrix) : ℂ := [V]cs / [V]cb
|
|
|
|
|
|
2024-04-29 10:42:44 -04:00
|
|
|
|
/-- The ratio of the `cs` and `cb` elements of a CKM matrix. -/
|
2024-04-29 08:13:52 -04:00
|
|
|
|
scoped[CKMMatrix] notation (name := cs_cb_ratio) "[" V "]cs|cb" => Rcscb V
|
|
|
|
|
|
|
|
|
|
lemma Rcscb_mul_cb {V : CKMMatrix} (h : [V]cb ≠ 0): [V]cs = Rcscb V * [V]cb := by
|
|
|
|
|
rw [Rcscb]
|
|
|
|
|
exact (div_mul_cancel₀ [V]cs h).symm
|
|
|
|
|
|
|
|
|
|
end ratios
|
2024-04-23 16:00:06 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end CKMMatrix
|
|
|
|
|
|
|
|
|
|
end
|