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.Particles.BeyondTheStandardModel.RHN.AnomalyCancellation.PlusU1.Basic

Properties of Quad Sols for SM with RHN

We give a series of properties held by solutions to the quadratic equation.

In particular given a quad solution we define a map from linear solutions to quadratic solutions and show that it is a surjection. The main reference for this is:

    https://arxiv.org/abs/2006.03588

@[expose] public sectionn:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsa:ℚb:ℚ⊢ quadBiLin.toHomogeneousQuad (a • S.val) + 0 + 2 * (a * (b * (quadBiLin S.val) C.val)) = a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val) erw [n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsa:ℚb:ℚ⊢ a ^ 2 * accQuad S.val + 0 + 2 * (a * (b * (quadBiLin S.val) C.val)) = a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val)n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsa:ℚb:ℚ⊢ a ^ 2 * accQuad S.val + 0 + 2 * (a * (b * (quadBiLin S.val) C.val)) = a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val) All goals completed! 🐙

A helper function for what comes later.

def α₁ (S : (PlusU1 n).LinSols) : ℚ := - 2 * quadBiLin S.val C.val

A helper function for what comes later.

def α₂ (S : (PlusU1 n).LinSols) : ℚ := accQuad S.val
lemma α₂_AFQ (S : (PlusU1 n).QuadSols) : α₂ S.1 = 0 := quadSol Slemma accQuad_α₁_α₂ (S : (PlusU1 n).LinSols) : accQuad ((α₁ C S) • S + α₂ S • C.1).val = 0 := n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSols⊢ accQuad (α₁ C S • S + α₂ S • C.toLinSols).val = 0 erw [n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSols⊢ α₁ C S * (α₁ C S * accQuad S.val + 2 * α₂ S * (quadBiLin S.val) C.val) = 0 n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSols⊢ -2 * (quadBiLin S.val) C.val * (-2 * (quadBiLin S.val) C.val * accQuad S.val + 2 * α₂ S * (quadBiLin S.val) C.val) = 0 n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSols⊢ -2 * (quadBiLin S.val) C.val * (-2 * (quadBiLin S.val) C.val * accQuad S.val + 2 * accQuad S.val * (quadBiLin S.val) C.val) = 0n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSols⊢ -2 * (quadBiLin S.val) C.val * (-2 * (quadBiLin S.val) C.val * accQuad S.val + 2 * accQuad S.val * (quadBiLin S.val) C.val) = 0 All goals completed! 🐙lemma accQuad_α₁_α₂_zero (S : (PlusU1 n).LinSols) (h1 : α₁ C S = 0) (h2 : α₂ S = 0) (a b : ℚ) : accQuad (a • S + b • C.1).val = 0 := n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsh1:α₁ C S = 0h2:α₂ S = 0a:ℚb:ℚ⊢ accQuad (a • S + b • C.toLinSols).val = 0 erw [n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsh1:α₁ C S = 0h2:α₂ S = 0a:ℚb:ℚ⊢ a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val) = 0n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsh1:α₁ C S = 0h2:α₂ S = 0a:ℚb:ℚ⊢ a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val) = 0 n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).LinSolsh2:quadBiLin.toHomogeneousQuad S.val = 0a:ℚb:ℚh1:∑ x, (toSpeciesEquiv S.val 0 x * toSpeciesEquiv C.val 0 x + -(2 * (toSpeciesEquiv S.val 1 x * toSpeciesEquiv C.val 1 x)) + toSpeciesEquiv S.val 2 x * toSpeciesEquiv C.val 2 x + -(toSpeciesEquiv S.val 3 x * toSpeciesEquiv C.val 3 x) + toSpeciesEquiv S.val 4 x * toSpeciesEquiv C.val 4 x) = 0⊢ a * (a * accQuad S.val + 2 * b * (quadBiLin S.val) C.val) = 0 All goals completed! 🐙

The construction of a QuadSol from a LinSols in the generic case.

def genericToQuad (S : (PlusU1 n).LinSols) : (PlusU1 n).QuadSols := linearToQuad ((α₁ C S) • S + α₂ S • C.1) (accQuad_α₁_α₂ C S)
lemma genericToQuad_on_quad (S : (PlusU1 n).QuadSols) : genericToQuad C S.1 = (α₁ C S.1) • S := n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSols⊢ genericToQuad C S.toLinSols = α₁ C S.toLinSols • S n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSols⊢ (genericToQuad C S.toLinSols).val = (α₁ C S.toLinSols • S).val n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSols⊢ α₁ C S.toLinSols • S.val + α₂ S.toLinSols • C.val = α₁ C S.toLinSols • S.val All goals completed! 🐙All goals completed! 🐙

The construction of a QuadSol from a LinSols in the special case when α₁ C S = 0 and α₂ S = 0.

def specialToQuad (S : (PlusU1 n).LinSols) (a b : ℚ) (h1 : α₁ C S = 0) (h2 : α₂ S = 0) : (PlusU1 n).QuadSols := linearToQuad (a • S + b • C.1) (accQuad_α₁_α₂_zero C S h1 h2 a b)
lemma special_on_quad (S : (PlusU1 n).QuadSols) (h1 : α₁ C S.1 = 0) : specialToQuad C S.1 1 0 h1 (α₂_AFQ S) = S := n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh1:α₁ C S.toLinSols = 0⊢ specialToQuad C S.toLinSols 1 0 h1 ⋯ = S n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh1:α₁ C S.toLinSols = 0⊢ (specialToQuad C S.toLinSols 1 0 h1 ⋯).val = S.val n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh1:α₁ C S.toLinSols = 0⊢ 1 • S.val + 0 • C.val = S.val All goals completed! 🐙

The construction of a QuadSols from a LinSols and two rationals taking account of the generic and special cases. This function is a surjection.

def toQuad : (PlusU1 n).LinSols × ℚ × ℚ → (PlusU1 n).QuadSols := fun S => if h : α₁ C S.1 = 0 ∧ α₂ S.1 = 0 then specialToQuad C S.1 S.2.1 S.2.2 h.1 h.2 else S.2.1 • genericToQuad C S.1

A function from QuadSols to LinSols × ℚ × ℚ which is a right inverse to toQuad.

@[simp] def toQuadInv : (PlusU1 n).QuadSols → (PlusU1 n).LinSols × ℚ × ℚ := fun S => if α₁ C S.1 = 0 then (S.1, 1, 0) else (S.1, (α₁ C S.1)⁻¹, 0)
n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSols⊢ (if α₁ C S.toLinSols = 0 then (S.toLinSols, 1, 0) else (S.toLinSols, (α₁ C S.toLinSols)⁻¹, 0)).1 = S.toLinSols n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh✝:α₁ C S.toLinSols = 0⊢ (S.toLinSols, 1, 0).1 = S.toLinSolsn:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh✝:¬α₁ C S.toLinSols = 0⊢ (S.toLinSols, (α₁ C S.toLinSols)⁻¹, 0).1 = S.toLinSols n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh✝:α₁ C S.toLinSols = 0⊢ (S.toLinSols, 1, 0).1 = S.toLinSolsn:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh✝:¬α₁ C S.toLinSols = 0⊢ (S.toLinSols, (α₁ C S.toLinSols)⁻¹, 0).1 = S.toLinSols All goals completed! 🐙n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSols⊢ α₁ C S.toLinSols = 0 ↔ α₁ C S.toLinSols = 0 ∧ 0 = 0 All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙n:ℕC:(PlusU1 n).QuadSolsS:(PlusU1 n).QuadSolsh:¬α₁ C S.toLinSols = 0⊢ (toQuadInv C S).2.1 • genericToQuad C (toQuadInv C S).1 = S All goals completed! 🐙theorem toQuad_surjective : Function.Surjective (toQuad C) := Function.RightInverse.surjective (toQuad_rightInverse C)