Skip to content

Commit

Permalink
Merge pull request #266 from HEPLean/Bump
Browse files Browse the repository at this point in the history
chore: Bump to 4.14.0
  • Loading branch information
jstoobysmith authored Dec 10, 2024
2 parents 86921c0 + a0e951f commit 3a76c82
Show file tree
Hide file tree
Showing 34 changed files with 414 additions and 327 deletions.
2 changes: 1 addition & 1 deletion HepLean/AnomalyCancellation/SM/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ lemma accSU2_ext {S T : (SMCharges n).Charges}
AddHom.coe_mk]
repeat erw [Finset.sum_add_distrib]
repeat erw [← Finset.mul_sum]
exact Mathlib.Tactic.LinearCombination.add_pf (congrArg (HMul.hMul 3) (hj 0)) (hj 3)
exact Mathlib.Tactic.LinearCombination.add_eq_eq (congrArg (HMul.hMul 3) (hj 0)) (hj 3)

/-- The `SU(3)` anomaly equations. -/
@[simp]
Expand Down
6 changes: 3 additions & 3 deletions HepLean/BeyondTheStandardModel/TwoHDM/GaugeOrbits.lean
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@ lemma prodMatrix_hermitian (Φ1 Φ2 : HiggsField) (x : SpaceTime) :

/-- The map `prodMatrix` is a smooth function on spacetime. -/
lemma prodMatrix_smooth1 Φ2 : HiggsField) :
Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, Matrix (Fin 2) (Fin 2) ℂ) (prodMatrix Φ1 Φ2) := by
ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, Matrix (Fin 2) (Fin 2) ℂ) (prodMatrix Φ1 Φ2) := by
rw [show 𝓘(ℝ, Matrix (Fin 2) (Fin 2) ℂ) = modelWithCornersSelf ℝ (Fin 2 → Fin 2 → ℂ) from rfl,
smooth_pi_space]
contMDiff_pi_space]
intro i
rw [smooth_pi_space]
rw [contMDiff_pi_space]
intro j
fin_cases i <;> fin_cases j <;>
simpa only [prodMatrix, Fin.zero_eta, Fin.isValue, of_apply, cons_val', cons_val_zero,
Expand Down
8 changes: 4 additions & 4 deletions HepLean/Lorentz/ComplexTensor/PauliMatrices/Basis.lean
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ def pauliCoMap := ((Sum.elim ![Color.down, Color.down] ![Color.up, Color.upL, Co
⇑finSumFinEquiv.symm) ∘ Fin.succAbove 1 ∘ Fin.succAbove 1)

lemma pauliMatrix_contr_down_0 :
(contr 1 1 rfl (((tensorNode (basisVector ![Color.down, Color.down] fun x => 0)).prod
(contr 1 1 rfl (((tensorNode (basisVector ![Color.down, Color.down] fun _ => 0)).prod
(tensorNode pauliContr)))).tensor
= basisVector pauliCoMap (fun | 0 => 0 | 1 => 0 | 2 => 0)
+ basisVector pauliCoMap (fun | 0 => 0 | 1 => 1 | 2 => 1) := by
Expand Down Expand Up @@ -379,7 +379,7 @@ lemma pauliMatrix_contr_down_0 :
fin_cases k <;> rfl

lemma pauliMatrix_contr_down_1 :
{(basisVector ![Color.down, Color.down] fun x => 1) | ν μ ⊗
{(basisVector ![Color.down, Color.down] fun _ => 1) | ν μ ⊗
pauliContr | μ α β}ᵀ.tensor
= basisVector pauliCoMap (fun | 0 => 1 | 1 => 0 | 2 => 1)
+ basisVector pauliCoMap (fun | 0 => 1 | 1 => 1 | 2 => 0) := by
Expand Down Expand Up @@ -424,7 +424,7 @@ lemma pauliMatrix_contr_down_1 :
fin_cases k <;> rfl

lemma pauliMatrix_contr_down_2 :
{(basisVector ![Color.down, Color.down] fun x => 2) | μ ν ⊗
{(basisVector ![Color.down, Color.down] fun _ => 2) | μ ν ⊗
pauliContr | ν α β}ᵀ.tensor
= (- I) • basisVector pauliCoMap (fun | 0 => 2 | 1 => 0 | 2 => 1)
+ (I) • basisVector pauliCoMap (fun | 0 => 2 | 1 => 1 | 2 => 0) := by
Expand Down Expand Up @@ -464,7 +464,7 @@ lemma pauliMatrix_contr_down_2 :
· decide

lemma pauliMatrix_contr_down_3 :
{(basisVector ![Color.down, Color.down] fun x => 3) | μ ν ⊗
{(basisVector ![Color.down, Color.down] fun _ => 3) | μ ν ⊗
pauliContr | ν α β}ᵀ.tensor
= basisVector pauliCoMap (fun | 0 => 3 | 1 => 0 | 2 => 0)
+ (- 1 : ℂ) • basisVector pauliCoMap (fun | 0 => 3 | 1 => 1 | 2 => 1) := by
Expand Down
6 changes: 4 additions & 2 deletions HepLean/Lorentz/Group/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -241,17 +241,19 @@ lemma toProd_continuous : Continuous (@toProd d) := by
MulOpposite.continuous_op.comp' ((continuous_const.matrix_mul (continuous_iff_le_induced.mpr
fun U a => a).matrix_transpose).matrix_mul continuous_const)⟩

open Topology

/-- The embedding from the Lorentz Group into the monoid of matrices times the opposite of
the monoid of matrices. -/
lemma toProd_embedding : IsEmbedding (@toProd d) where
inj := toProd_injective
injective := toProd_injective
eq_induced :=
(isInducing_iff ⇑toProd).mp (IsInducing.of_comp toProd_continuous continuous_fst
((isInducing_iff (Prod.fst ∘ ⇑toProd)).mpr rfl))

/-- The embedding from the Lorentz Group into `GL (Fin 4) ℝ`. -/
lemma toGL_embedding : IsEmbedding (@toGL d).toFun where
inj := toGL_injective
injective := toGL_injective
eq_induced := by
refine ((fun {X} {t t'} => TopologicalSpace.ext_iff.mpr) fun _ ↦ ?_).symm
rw [TopologicalSpace.ext_iff.mp toProd_embedding.eq_induced _, isOpen_induced_iff,
Expand Down
4 changes: 1 addition & 3 deletions HepLean/Lorentz/RealVector/Contraction.lean
Original file line number Diff line number Diff line change
Expand Up @@ -347,9 +347,7 @@ lemma _root_.LorentzGroup.mem_iff_norm : Λ ∈ LorentzGroup d ↔
Action.FunctorCategoryEquivalence.functor_obj_obj, map_add, map_sub] at hp' hn'
linear_combination (norm := ring_nf) (1 / 4) * hp' + (-1/ 4) * hn'
rw [symm (Λ *ᵥ y) (Λ *ᵥ x), symm y x]
simp only [Action.instMonoidalCategory_tensorUnit_V, Action.instMonoidalCategory_tensorObj_V,
Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor,
Action.FunctorCategoryEquivalence.functor_obj_obj, add_sub_cancel, neg_add_cancel, e]
ring

/-!
Expand Down
4 changes: 3 additions & 1 deletion HepLean/Lorentz/RealVector/Modules.lean
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ def toSpace (v : ContrMod d) : EuclideanSpace ℝ (Fin d) := v.val ∘ Sum.inr
/-- The representation of the Lorentz group acting on `ContrℝModule d`. -/
def rep : Representation ℝ (LorentzGroup d) (ContrMod d) where
toFun g := Matrix.toLinAlgEquiv stdBasis g
map_one' := (MulEquivClass.map_eq_one_iff (Matrix.toLinAlgEquiv stdBasis)).mpr rfl
map_one' := EmbeddingLike.map_eq_one_iff.mpr rfl
map_mul' x y := by
simp only [lorentzGroupIsGroup_mul_coe, _root_.map_mul]

Expand Down Expand Up @@ -283,6 +283,8 @@ lemma toSelfAdjoint_symm_basis (i : Fin 1 ⊕ Fin 3) :
instance : TopologicalSpace (ContrMod d) := TopologicalSpace.induced
ContrMod.toFin1dℝEquiv (Pi.topologicalSpace)

open Topology

lemma toFin1dℝEquiv_isInducing : IsInducing (@ContrMod.toFin1dℝEquiv d) := by
exact { eq_induced := rfl }

Expand Down
2 changes: 1 addition & 1 deletion HepLean/Mathematics/LinearMaps.lean
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def mk₂ (f : V × V → ℚ) (map_smul : ∀ a S T, f (a • S, T) = a * f (S,
intro T1 T2
simp only
rw [swap, map_add]
exact Mathlib.Tactic.LinearCombination.add_pf (swap T1 S) (swap T2 S)
exact Mathlib.Tactic.LinearCombination.add_eq_eq (swap T1 S) (swap T2 S)
map_smul' := by
intro a T
simp only [eq_ratCast, Rat.cast_eq_id, id_eq, smul_eq_mul]
Expand Down
32 changes: 16 additions & 16 deletions HepLean/Mathematics/PiTensorProduct.lean
Original file line number Diff line number Diff line change
Expand Up @@ -223,32 +223,32 @@ def domCoprod :
MultilinearMap R (Sum.elim s1 s2) ((⨂[R] i : ι1, s1 i) ⊗[R] ⨂[R] i : ι2, s2 i) where
toFun f := (PiTensorProduct.tprod R (pureInl f)) ⊗ₜ
(PiTensorProduct.tprod R (pureInr f))
map_add' f xy v1 v2 := by
map_update_add' f xy v1 v2 := by
haveI : DecidableEq (ι1 ⊕ ι2) := inferInstance
haveI : DecidableEq ι1 :=
@Function.Injective.decidableEq ι11 ⊕ ι2) Sum.inl _ Sum.inl_injective
haveI : DecidableEq ι2 :=
@Function.Injective.decidableEq ι21 ⊕ ι2) Sum.inr _ Sum.inr_injective
match xy with
| Sum.inl xy =>
simp only [Sum.elim_inl, pureInl_update_left, MultilinearMap.map_add, pureInr_update_left, ←
add_tmul]
simp only [Sum.elim_inl, pureInl_update_left, MultilinearMap.map_update_add,
pureInr_update_left, ← add_tmul]
| Sum.inr xy =>
simp only [Sum.elim_inr, pureInr_update_right, MultilinearMap.map_add, pureInl_update_right,
tmul_add]
map_smul' f xy r p := by
simp only [Sum.elim_inr, pureInl_update_right, pureInr_update_right,
MultilinearMap.map_update_add, ← tmul_add]
map_update_smul' f xy r p := by
haveI : DecidableEq (ι1 ⊕ ι2) := inferInstance
haveI : DecidableEq ι1 :=
@Function.Injective.decidableEq ι11 ⊕ ι2) Sum.inl _ Sum.inl_injective
haveI : DecidableEq ι2 :=
@Function.Injective.decidableEq ι21 ⊕ ι2) Sum.inr _ Sum.inr_injective
match xy with
| Sum.inl x =>
simp only [Sum.elim_inl, pureInl_update_left, MultilinearMap.map_smul, pureInr_update_left,
smul_tmul, tmul_smul]
simp only [Sum.elim_inl, pureInl_update_left, MultilinearMap.map_update_smul,
pureInr_update_left, smul_tmul, tmul_smul]
| Sum.inr y =>
simp only [Sum.elim_inr, pureInl_update_right, pureInr_update_right, MultilinearMap.map_smul,
tmul_smul]
simp only [Sum.elim_inr, pureInl_update_right, pureInr_update_right,
MultilinearMap.map_update_smul, tmul_smul]

/-- Expand `PiTensorProduct` on sums into a `TensorProduct` of two factors. -/
def tmulSymm : (⨂[R] i : ι1 ⊕ ι2, (Sum.elim s1 s2) i) →ₗ[R]
Expand Down Expand Up @@ -308,21 +308,21 @@ def elimPureTensorMulLin : MultilinearMap R s1
(MultilinearMap R s2 (⨂[R] i : ι1 ⊕ ι2, (Sum.elim s1 s2) i)) where
toFun p := {
toFun := fun q => PiTensorProduct.tprod R (elimPureTensor p q)
map_add' := fun m x v1 v2 => by
map_update_add' := fun m x v1 v2 => by
haveI : DecidableEq ι2 := inferInstance
haveI := Classical.decEq ι1
simp only [elimPureTensor_update_right, MultilinearMap.map_add]
map_smul' := fun m x r v => by
simp only [elimPureTensor_update_right, MultilinearMap.map_update_add]
map_update_smul' := fun m x r v => by
haveI : DecidableEq ι2 := inferInstance
haveI := Classical.decEq ι1
simp only [elimPureTensor_update_right, MultilinearMap.map_smul]}
map_add' p x v1 v2 := by
simp only [elimPureTensor_update_right, MultilinearMap.map_update_smul]}
map_update_add' p x v1 v2 := by
haveI : DecidableEq ι1 := inferInstance
haveI := Classical.decEq ι2
apply MultilinearMap.ext
intro y
simp
map_smul' p x r v := by
map_update_smul' p x r v := by
haveI : DecidableEq ι1 := inferInstance
haveI := Classical.decEq ι2
apply MultilinearMap.ext
Expand Down
11 changes: 8 additions & 3 deletions HepLean/Mathematics/SO3/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ instance SO3Group : Group SO3 where
by
simp only [det_mul, A.2.1, B.2.1, mul_one],
by
simp only [transpose_mul, ← Matrix.mul_assoc, Matrix.mul_assoc, B.2.2, mul_one, A.2.2]⟩
simp only [transpose_mul, ← Matrix.mul_assoc, Matrix.mul_assoc, B.2.2, mul_one, A.2.2]
trans A.1 * ((B.1 * (B.1)ᵀ) * (A.1)ᵀ)
· noncomm_ring
· simp [Matrix.mul_assoc, B.2.2, mul_one, A.2.2]⟩
mul_assoc A B C := Subtype.eq (Matrix.mul_assoc A.1 B.1 C.1)
one := ⟨1, det_one, by rw [transpose_one, mul_one]⟩
one_mul A := Subtype.eq (Matrix.one_mul A.1)
Expand Down Expand Up @@ -81,16 +84,18 @@ lemma toProd_continuous : Continuous toProd :=
Continuous.comp' (MulOpposite.continuous_op)
(Continuous.matrix_transpose (continuous_iff_le_induced.mpr fun _ a ↦ a))⟩

open Topology

/-- The embedding of `SO(3)` into the monoid of matrices times the opposite of
the monoid of matrices. -/
lemma toProd_embedding : IsEmbedding toProd where
inj := toProd_injective
injective := toProd_injective
eq_induced := (isInducing_iff ⇑toProd).mp (IsInducing.of_comp toProd_continuous
continuous_fst ((isInducing_iff (Prod.fst ∘ ⇑toProd)).mpr rfl))

/-- The embedding of `SO(3)` into `GL (Fin 3) ℝ`. -/
lemma toGL_embedding : IsEmbedding toGL.toFun where
inj := toGL_injective
injective := toGL_injective
eq_induced := by
refine ((fun {X} {t t'} => TopologicalSpace.ext_iff.mpr) ?_).symm
intro s
Expand Down
2 changes: 1 addition & 1 deletion HepLean/Meta/TransverseTactics.lean
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def traverseForest (file : FilePath)
let t := steps.map fun (env, infoState) ↦
(infoState.trees.toList.map fun t ↦
(Lean.Elab.InfoTree.foldInfo (visitInfo file env visitTacticInfo) [] t).reverse)
t.join.join
t.flatten.flatten

end transverseTactics

Expand Down
25 changes: 13 additions & 12 deletions HepLean/StandardModel/HiggsBoson/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ def toFin2ℂ : HiggsVec →L[ℝ] (Fin 2 → ℂ) where
map_smul' a x := rfl

/-- The map `toFin2ℂ` is smooth. -/
lemma smooth_toFin2ℂ : Smooth 𝓘(ℝ, HiggsVec) 𝓘(ℝ, Fin 2 → ℂ) toFin2ℂ :=
ContinuousLinearMap.smooth toFin2ℂ
lemma smooth_toFin2ℂ : ContMDiff 𝓘(ℝ, HiggsVec) 𝓘(ℝ, Fin 2 → ℂ) toFin2ℂ :=
ContinuousLinearMap.contMDiff toFin2ℂ

/-- An orthonormal basis of `HiggsVec`. -/
def orthonormBasis : OrthonormalBasis (Fin 2) ℂ HiggsVec :=
Expand Down Expand Up @@ -92,7 +92,7 @@ instance : SmoothVectorBundle HiggsVec HiggsBundle SpaceTime.asSmoothManifold :=
Bundle.Trivial.smoothVectorBundle HiggsVec

/-- A Higgs field is a smooth section of the Higgs bundle. -/
abbrev HiggsField : Type := SmoothSection SpaceTime.asSmoothManifold HiggsVec HiggsBundle
abbrev HiggsField : Type := ContMDiffSection SpaceTime.asSmoothManifold HiggsVec HiggsBundle

/-- Given a vector in `HiggsVec` the constant Higgs field with value equal to that
section. -/
Expand All @@ -101,7 +101,7 @@ def HiggsVec.toField (φ : HiggsVec) : HiggsField where
contMDiff_toFun := by
intro x
rw [Bundle.contMDiffAt_section]
exact smoothAt_const
exact contMDiffAt_const

/-- For all spacetime points, the constant Higgs field defined by a Higgs vector,
returns that Higgs Vector. -/
Expand All @@ -120,7 +120,8 @@ open HiggsVec
/-- Given a `HiggsField`, the corresponding map from `SpaceTime` to `HiggsVec`. -/
def toHiggsVec (φ : HiggsField) : SpaceTime → HiggsVec := φ

lemma toHiggsVec_smooth (φ : HiggsField) : Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, HiggsVec) φ.toHiggsVec := by
lemma toHiggsVec_smooth (φ : HiggsField) :
ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, HiggsVec) ⊤ φ.toHiggsVec := by
intro x0
have h1 := φ.contMDiff x0
rw [Bundle.contMDiffAt_section] at h1
Expand All @@ -138,20 +139,20 @@ lemma toFin2ℂ_comp_toHiggsVec (φ : HiggsField) :
-/

lemma toVec_smooth (φ : HiggsField) : Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, Fin 2 → ℂ) φ :=
lemma toVec_smooth (φ : HiggsField) : ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, Fin 2 → ℂ) φ :=
smooth_toFin2ℂ.comp φ.toHiggsVec_smooth

lemma apply_smooth (φ : HiggsField) :
∀ i, Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℂ) (fun (x : SpaceTime) => (φ x i)) :=
(smooth_pi_space).mp (φ.toVec_smooth)
∀ i, ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℂ) (fun (x : SpaceTime) => (φ x i)) :=
(contMDiff_pi_space).mp (φ.toVec_smooth)

lemma apply_re_smooth (φ : HiggsField) (i : Fin 2) :
Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (reCLM ∘ (fun (x : SpaceTime) => (φ x i))) :=
(ContinuousLinearMap.smooth reCLM).comp (φ.apply_smooth i)
ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (reCLM ∘ (fun (x : SpaceTime) => (φ x i))) :=
(ContinuousLinearMap.contMDiff reCLM).comp (φ.apply_smooth i)

lemma apply_im_smooth (φ : HiggsField) (i : Fin 2) :
Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (imCLM ∘ (fun (x : SpaceTime) => (φ x i))) :=
(ContinuousLinearMap.smooth imCLM).comp (φ.apply_smooth i)
ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (imCLM ∘ (fun (x : SpaceTime) => (φ x i))) :=
(ContinuousLinearMap.contMDiff imCLM).comp (φ.apply_smooth i)

/-!
Expand Down
21 changes: 14 additions & 7 deletions HepLean/StandardModel/HiggsBoson/GaugeAction.lean
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,21 @@ lemma rotateMatrix_unitary {φ : HiggsVec} (hφ : φ ≠ 0) :
erw [mul_fin_two, one_fin_two]
have : (‖φ‖ : ℂ) ≠ 0 := ofReal_inj.mp.mt (norm_ne_zero_iff.mpr hφ)
ext i j
fin_cases i <;> fin_cases j <;> field_simp
<;> rw [← ofReal_mul, ← sq, ← @real_inner_self_eq_norm_sq]
· simp [PiLp.inner_apply, Complex.inner, neg_mul, sub_neg_eq_add,
fin_cases i <;> fin_cases j
· field_simp
rw [← ofReal_mul, ← sq, ← @real_inner_self_eq_norm_sq]
simp [PiLp.inner_apply, Complex.inner, neg_mul, sub_neg_eq_add,
Fin.sum_univ_two, ofReal_add, ofReal_mul, mul_conj, mul_comm, add_comm]
· ring_nf
· ring_nf
· simp [PiLp.inner_apply, Complex.inner, neg_mul, sub_neg_eq_add,
Fin.sum_univ_two, ofReal_add, ofReal_mul, mul_conj, mul_comm]
· simp only [Fin.isValue, Fin.zero_eta, Fin.mk_one, of_apply, cons_val', cons_val_one, head_cons,
empty_val', cons_val_fin_one, cons_val_zero]
ring_nf
· simp only [Fin.isValue, Fin.mk_one, Fin.zero_eta, of_apply, cons_val', cons_val_zero,
empty_val', cons_val_fin_one, cons_val_one, head_fin_const]
ring_nf
· field_simp
rw [← ofReal_mul, ← sq, ← @real_inner_self_eq_norm_sq]
simp only [Fin.isValue, mul_comm, mul_conj, PiLp.inner_apply, Complex.inner, ofReal_re,
Fin.sum_univ_two, ofReal_add]

/-- The `rotateMatrix` for a non-zero Higgs vector is special unitary. -/
lemma rotateMatrix_specialUnitary {φ : HiggsVec} (hφ : φ ≠ 0) :
Expand Down
8 changes: 4 additions & 4 deletions HepLean/StandardModel/HiggsBoson/PointwiseInnerProd.lean
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ lemma innerProd_expand (φ1 φ2 : HiggsField) :
RCLike.im_to_complex, I_sq, mul_neg, mul_one, neg_mul, sub_neg_eq_add, one_mul]
ring

lemma smooth_innerProd1 φ2 : HiggsField) : Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℂ) ⟪φ1, φ2⟫_H := by
lemma smooth_innerProd1 φ2 : HiggsField) : ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℂ) ⟪φ1, φ2⟫_H := by
rw [innerProd_expand]
exact (ContinuousLinearMap.smooth (equivRealProdCLM.symm : ℝ × ℝ →L[ℝ] ℂ)).comp $
exact (ContinuousLinearMap.contMDiff (equivRealProdCLM.symm : ℝ × ℝ →L[ℝ] ℂ)).comp $
(((((φ1.apply_re_smooth 0).smul (φ2.apply_re_smooth 0)).add
((φ1.apply_re_smooth 1).smul (φ2.apply_re_smooth 1))).add
((φ1.apply_im_smooth 0).smul (φ2.apply_im_smooth 0))).add
Expand Down Expand Up @@ -171,9 +171,9 @@ lemma normSq_zero (φ : HiggsField) (x : SpaceTime) : φ.normSq x = 0 ↔ φ x =
simp [normSq, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, pow_eq_zero_iff, norm_eq_zero]

/-- The norm squared of the Higgs field is a smooth function on space-time. -/
lemma normSq_smooth (φ : HiggsField) : Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) φ.normSq := by
lemma normSq_smooth (φ : HiggsField) : ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) φ.normSq := by
rw [normSq_expand]
refine Smooth.add ?_ ?_
refine ContMDiff.add ?_ ?_
· simp only [mul_re, conj_re, conj_im, neg_mul, sub_neg_eq_add]
exact ((φ.apply_re_smooth 0).smul (φ.apply_re_smooth 0)).add $
(φ.apply_im_smooth 0).smul (φ.apply_im_smooth 0)
Expand Down
6 changes: 3 additions & 3 deletions HepLean/StandardModel/HiggsBoson/Potential.lean
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ def toFun (φ : HiggsField) (x : SpaceTime) : ℝ :=

/-- The potential is smooth. -/
lemma toFun_smooth (φ : HiggsField) :
Smooth 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (fun x => P.toFun φ x) := by
ContMDiff 𝓘(ℝ, SpaceTime) 𝓘(ℝ, ℝ) (fun x => P.toFun φ x) := by
simp only [toFun, normSq, neg_mul]
exact (smooth_const.smul φ.normSq_smooth).neg.add
((smooth_const.smul φ.normSq_smooth).smul φ.normSq_smooth)
exact (contMDiff_const.smul φ.normSq_smooth).neg.add
((contMDiff_const.smul φ.normSq_smooth).smul φ.normSq_smooth)

/-- The Higgs potential formed by negating the mass squared and the quartic coupling. -/
def neg : Potential where
Expand Down
Loading

0 comments on commit 3a76c82

Please sign in to comment.