Merge pull request #132 from HEPLean/simp_replace

refactor: Replace some simp with exact
This commit is contained in:
Joseph Tooby-Smith 2024-08-30 12:04:13 -04:00 committed by GitHub
commit fdbb82d80e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 155 additions and 217 deletions

View file

@ -200,7 +200,7 @@ def IsSolution (χ : ACCSystem) (S : χ.Charges) : Prop :=
instance solsMulAction (χ : ACCSystem) : MulAction χ.Sols where
smul a S := ⟨a • S.toQuadSols, by
erw [(χ.cubicACC).map_smul, S.cubicSol]
simp
exact Rat.mul_zero (a ^ 3)
mul_smul a b S := Sols.ext (mul_smul _ _ _)
one_smul S := Sols.ext (one_smul _ _)

View file

@ -73,7 +73,7 @@ lemma linEqPropSol_iff_proj_linEqProp (R : MSSMACC.Sols) :
rw [α₁_proj, α₂_proj, h]
simp only [neg_zero, Fin.isValue, Fin.reduceFinMk, zero_mul, and_self]
· rw [h.2.2]
simp
exact Rat.mul_zero ((dot Y₃.val) B₃.val)
/-- A condition which is satisfied if the plane spanned by `R`, `Y₃` and `B₃` lies
entirely in the quadratic surface. -/
@ -119,7 +119,7 @@ lemma inQuadSolProp_iff_proj_inQuadProp (R : MSSMACC.Sols) :
simp only [Fin.isValue, Fin.reduceFinMk, mul_eq_zero,
OfNat.ofNat_ne_zero, or_self, false_or] at h
rw [h.2.1, h.2.2]
simp
exact Prod.mk_eq_zero.mp rfl
/-- A condition which is satisfied if the plane spanned by `R`, `Y₃` and `B₃` lies
entirely in the cubic surface. -/
@ -166,7 +166,7 @@ lemma inCubeSolProp_iff_proj_inCubeProp (R : MSSMACC.Sols) :
simp only [Fin.isValue, Fin.reduceFinMk, mul_eq_zero, OfNat.ofNat_ne_zero, ne_eq,
not_false_eq_true, pow_eq_zero_iff, or_self, false_or] at h
rw [h.2.1, h.2.2]
simp
exact Prod.mk_eq_zero.mp rfl
/-- Those charge assignments perpendicular to `Y₃` and `B₃` which satisfy the condition
`lineEqProp`. -/
@ -215,7 +215,7 @@ lemma toSolNSQuad_eq_planeY₃B₃_on_α (R : MSSMACC.AnomalyFreePerp) :
apply planeY₃B₃_eq
rw [α₁, α₂, α₃]
ring_nf
simp
exact ⟨trivial, trivial, trivial⟩
/-- Given an `R` perpendicular to `Y₃` and `B₃`, an element of `Sols`. This map is
not surjective. -/
@ -243,7 +243,7 @@ lemma toSolNS_proj (T : NotInLineEqSol) : toSolNS (toSolNSProj T.val) = T.val :=
rw [h1]
have h1 := (lineEqPropSol_iff_lineEqCoeff_zero T.val).mpr.mt T.prop
rw [← MulAction.mul_smul, mul_comm, mul_inv_cancel h1]
simp
exact MulAction.one_smul T.1.val
/-- A solution to the ACCs, given an element of `inLineEq × × × `. -/
def inLineEqToSol : InLineEq × × × → MSSMACC.Sols := fun (R, c₁, c₂, c₃) =>
@ -286,7 +286,7 @@ lemma inLineEqToSol_proj (T : InLineEqSol) : inLineEqToSol (inLineEqProj T) = T.
rw [h1]
have h2 := (inQuadSolProp_iff_quadCoeff_zero T.val).mpr.mt T.prop.2
rw [← MulAction.mul_smul, mul_comm, mul_inv_cancel h2]
simp
exact MulAction.one_smul T.1.val
/-- Given an element of `inQuad × × × `, a solution to the ACCs. -/
def inQuadToSol : InQuad × × × → MSSMACC.Sols := fun (R, a₁, a₂, a₃) =>
@ -331,7 +331,7 @@ lemma inQuadToSol_proj (T : InQuadSol) : inQuadToSol (inQuadProj T) = T.val := b
rw [h1]
have h2 := (inCubeSolProp_iff_cubicCoeff_zero T.val).mpr.mt T.prop.2.2
rw [← MulAction.mul_smul, mul_comm, mul_inv_cancel h2]
simp
exact MulAction.one_smul T.1.val
/-- Given a element of `inQuadCube × × × `, a solution to the ACCs. -/
def inQuadCubeToSol : InQuadCube × × × → MSSMACC.Sols := fun (R, b₁, b₂, b₃) =>
@ -371,9 +371,9 @@ lemma inQuadCubeToSol_proj (T : InQuadCubeSol) :
ring_nf
simp only [Fin.isValue, Fin.reduceFinMk, zero_smul, add_zero, zero_add]
rw [← MulAction.mul_smul, mul_comm, mul_inv_cancel]
· simp only [one_smul]
· exact MulAction.one_smul (T.1).val
· rw [show dot Y₃.val B₃.val = 108 by rfl]
simp
exact Ne.symm (OfNat.zero_ne_ofNat 108)
/-- A solution from an element of `MSSMACC.AnomalyFreePerp × × × `. We will
show that this map is a surjection. -/

View file

@ -138,7 +138,7 @@ lemma pureU1_anomalyFree_ext {n : } {S T : (PureU1 n.succ).LinSols}
rw [hi, pureU1_last, pureU1_last]
simp only [neg_inj]
apply Finset.sum_congr
· simp only
· rfl
· exact fun j _ => h j
namespace PureU1
@ -146,23 +146,21 @@ namespace PureU1
lemma sum_of_charges {n : } (f : Fin k → (PureU1 n).Charges) (j : Fin n) :
(∑ i : Fin k, (f i)) j = ∑ i : Fin k, (f i) j := by
induction k
· simp only [univ_eq_empty, sum_empty]
rfl
· rfl
· rename_i k hl
rw [Fin.sum_univ_castSucc, Fin.sum_univ_castSucc]
have hlt := hl (f ∘ Fin.castSucc)
erw [← hlt]
simp
rfl
lemma sum_of_anomaly_free_linear {n : } (f : Fin k → (PureU1 n).LinSols) (j : Fin n) :
(∑ i : Fin k, (f i)).1 j = (∑ i : Fin k, (f i).1 j) := by
induction k
· simp only [univ_eq_empty, sum_empty, ACCSystemLinear.linSolsAddCommMonoid_zero_val]
rfl
· rfl
· rename_i k hl
rw [Fin.sum_univ_castSucc, Fin.sum_univ_castSucc]
have hlt := hl (f ∘ Fin.castSucc)
erw [← hlt]
simp
rfl
end PureU1

View file

@ -61,7 +61,7 @@ lemma lt_eq {k i : Fin n.succ} (hk : S k ≤ 0) (hik : i ≤ k) : S i = S k := b
lemma val_le_zero {i : Fin n.succ} (hi : S i ≤ 0) : S i = S (0 : Fin n.succ) := by
symm
apply lt_eq hS hi
simp
exact Fin.zero_le i
lemma gt_eq {k i: Fin n.succ} (hk : 0 ≤ S k) (hik : k ≤ i) : S i = S k := by
have hSS := hS.2 k i hik
@ -73,8 +73,7 @@ lemma gt_eq {k i: Fin n.succ} (hk : 0 ≤ S k) (hik : k ≤ i) : S i = S k := by
lemma zero_gt (h0 : 0 ≤ S (0 : Fin n.succ)) (i : Fin n.succ) : S (0 : Fin n.succ) = S i := by
symm
refine gt_eq hS h0 ?_
simp
refine gt_eq hS h0 (Fin.zero_le i)
lemma opposite_signs_eq_neg {i j : Fin n.succ} (hi : S i ≤ 0) (hj : 0 ≤ S j) : S i = - S j := by
have hSS := hS.1 i j
@ -98,7 +97,7 @@ is defined as a element of `k ∈ Fin n` such that `S k.castSucc` and `S k.succ`
def Boundary (S : (PureU1 n.succ).Charges) (k : Fin n) : Prop := S k.castSucc < 0 ∧ 0 < S k.succ
lemma boundary_castSucc {k : Fin n} (hk : Boundary S k) : S k.castSucc = S (0 : Fin n.succ) :=
(lt_eq hS (le_of_lt hk.left) (by simp : 0 ≤ k.castSucc)).symm
(lt_eq hS (le_of_lt hk.left) (Fin.zero_le k.castSucc : 0 ≤ k.castSucc)).symm
lemma boundary_succ {k : Fin n} (hk : Boundary S k) : S k.succ = - S (0 : Fin n.succ) := by
have hn := boundary_castSucc hS hk
@ -114,8 +113,7 @@ lemma boundary_accGrav' (k : Fin n) : accGrav n.succ S =
erw [Finset.sum_equiv (Fin.castOrderIso (boundary_split k)).toEquiv]
· intro i
simp only [Fin.val_succ, mem_univ, RelIso.coe_fn_toEquiv]
· intro i
simp
· exact fun _ _ => rfl
lemma boundary_accGrav'' (k : Fin n) (hk : Boundary S k) :
accGrav n.succ S = (2 * ↑↑k + 1 - ↑n) * S (0 : Fin n.succ) := by
@ -123,10 +121,10 @@ lemma boundary_accGrav'' (k : Fin n) (hk : Boundary S k) :
rw [Fin.sum_univ_add]
have hfst (i : Fin k.succ.val) :
S (Fin.cast (boundary_split k) (Fin.castAdd (n.succ - k.succ.val) i)) = S k.castSucc := by
apply lt_eq hS (le_of_lt hk.left) (by rw [Fin.le_def]; simp; omega)
apply lt_eq hS (le_of_lt hk.left) (Fin.is_le i)
have hsnd (i : Fin (n.succ - k.succ.val)) :
S (Fin.cast (boundary_split k) (Fin.natAdd (k.succ.val) i)) = S k.succ := by
apply gt_eq hS (le_of_lt hk.right) (by rw [Fin.le_def]; simp)
apply gt_eq hS (le_of_lt hk.right) (by rw [Fin.le_def]; exact le.intro rfl)
simp only [hfst, hsnd]
simp only [Fin.val_succ, sum_const, card_fin, nsmul_eq_mul, cast_add, cast_one,
succ_sub_succ_eq_sub, Fin.is_le', cast_sub]
@ -145,8 +143,8 @@ lemma not_hasBoundary_zero_le (hnot : ¬ (HasBoundary S)) (h0 : S (0 : Fin n.suc
induction i
· rfl
· rename_i i hii
have hnott := hnot ⟨i, by {simp at hi; linarith}
have hii := hii (by omega)
have hnott := hnot ⟨i, succ_lt_succ_iff.mp hi
have hii := hii (lt_of_succ_lt hi)
erw [← hii] at hnott
exact (val_le_zero hS (hnott h0)).symm
@ -214,7 +212,7 @@ lemma AFL_even_below' {A : (PureU1 (2 * n.succ)).LinSols} (h : ConstAbsSorted A.
rw [Fin.le_def]
simp only [PureU1_numberCharges, Fin.coe_cast, Fin.coe_castAdd, mul_eq, Fin.coe_castSucc]
rw [AFL_even_Boundary h hA hk]
omega
exact Fin.is_le i
lemma AFL_even_below (A : (PureU1 (2 * n.succ)).LinSols) (h : ConstAbsSorted A.val)
(i : Fin n.succ) :
@ -235,7 +233,7 @@ lemma AFL_even_above' {A : (PureU1 (2 * n.succ)).LinSols} (h : ConstAbsSorted A.
rw [Fin.le_def]
simp only [mul_eq, Fin.val_succ, PureU1_numberCharges, Fin.coe_cast, Fin.coe_natAdd]
rw [AFL_even_Boundary h hA hk]
omega
exact Nat.le_add_right (n + 1) ↑i
lemma AFL_even_above (A : (PureU1 (2 * n.succ)).LinSols) (h : ConstAbsSorted A.val)
(i : Fin n.succ) :
@ -265,7 +263,7 @@ theorem boundary_value_even (S : (PureU1 (2 * n.succ)).LinSols) (hs : ConstAbs S
have h2 := ConstAbsSorted.AFL_even_above (sortAFL S) hS
rw [sortAFL_val] at h1 h2
rw [h1, h2]
simp
exact (InvolutiveNeg.neg_neg (sort S.val _)).symm
end ConstAbs

View file

@ -56,8 +56,7 @@ lemma ext_δ (S T : Fin (2 * n.succ) → ) (h1 : ∀ i, S (δ₁ i) = T (δ
by_cases hi : i.val < n.succ
· let j : Fin n.succ := ⟨i, hi⟩
have h2 := h1 j
have h3 : δ₁ j = i := by
simp [δ₁, Fin.ext_iff]
have h3 : δ₁ j = i := rfl
rw [h3] at h2
exact h2
· let j : Fin n.succ := ⟨i - n.succ, by omega⟩
@ -72,10 +71,9 @@ lemma sum_δ₁_δ₂ (S : Fin (2 * n.succ) → ) :
∑ i, S i = ∑ i : Fin n.succ, ((S ∘ δ₁) i + (S ∘ δ₂) i) := by
have h1 : ∑ i, S i = ∑ i : Fin (n.succ + n.succ), S (Fin.cast (split_equal n.succ) i) := by
rw [Finset.sum_equiv (Fin.castOrderIso (split_equal n.succ)).symm.toEquiv]
intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
intro i
simp
· intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
· exact fun _ _=> rfl
rw [h1]
rw [Fin.sum_univ_add, Finset.sum_add_distrib]
rfl
@ -84,10 +82,9 @@ lemma sum_δ₁_δ₂' (S : Fin (2 * n.succ) → ) :
∑ i, S i = ∑ i : Fin n.succ, ((S ∘ δ₁) i + (S ∘ δ₂) i) := by
have h1 : ∑ i, S i = ∑ i : Fin (n.succ + n.succ), S (Fin.cast (split_equal n.succ) i) := by
rw [Finset.sum_equiv (Fin.castOrderIso (split_equal n.succ)).symm.toEquiv]
intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
intro i
simp
· intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
· exact fun _ _ => rfl
rw [h1]
rw [Fin.sum_univ_add, Finset.sum_add_distrib]
rfl
@ -96,10 +93,9 @@ lemma sum_δ!₁_δ!₂ (S : Fin (2 * n.succ) → ) :
∑ i, S i = S δ!₃ + S δ!₄ + ∑ i : Fin n, ((S ∘ δ!₁) i + (S ∘ δ!₂) i) := by
have h1 : ∑ i, S i = ∑ i : Fin (1 + ((n + n) + 1)), S (Fin.cast (n_cond₂ n) i) := by
rw [Finset.sum_equiv (Fin.castOrderIso (n_cond₂ n)).symm.toEquiv]
intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
intro i
simp
· intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
· exact fun _ _ => rfl
rw [h1]
rw [Fin.sum_univ_add, Fin.sum_univ_add, Fin.sum_univ_add, Finset.sum_add_distrib]
simp only [univ_unique, Fin.default_eq_zero, Fin.isValue, sum_singleton, Function.comp_apply]
@ -112,12 +108,12 @@ lemma sum_δ!₁_δ!₂ (S : Fin (2 * n.succ) → ) :
nth_rewrite 2 [Rat.add_comm]
rfl
lemma δ!₃_δ₁0 : @δ!₃ n = δ₁ 0 := by
rfl
lemma δ!₃_δ₁0 : @δ!₃ n = δ₁ 0 := rfl
lemma δ!₄_δ₂Last: @δ!₄ n = δ₂ (Fin.last n) := by
rw [Fin.ext_iff]
simp [δ!₄, δ₂]
simp only [succ_eq_add_one, δ!₄, Fin.isValue, Fin.coe_cast, Fin.coe_natAdd, Fin.coe_fin_one,
add_zero, δ₂, Fin.natAdd_last, Fin.val_last]
omega
lemma δ!₁_δ₁ (j : Fin n) : δ!₁ j = δ₁ j.succ := by
@ -367,10 +363,10 @@ lemma P_δ₁ (f : Fin n.succ → ) (j : Fin n.succ) : P f (δ₁ j) = f j :=
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis_on_δ₁_self]
simp only [mul_one]
exact Rat.mul_one (f j)
· intro k _ hkj
rw [basis_on_δ₁_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp only [mem_univ, not_true_eq_false, _root_.mul_eq_zero, IsEmpty.forall_iff]
lemma P!_δ!₁ (f : Fin n → ) (j : Fin n) : P! f (δ!₁ j) = f j := by
@ -378,10 +374,10 @@ lemma P!_δ!₁ (f : Fin n → ) (j : Fin n) : P! f (δ!₁ j) = f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis!_on_δ!₁_self]
simp only [mul_one]
exact Rat.mul_one (f j)
· intro k _ hkj
rw [basis!_on_δ!₁_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp only [mem_univ, not_true_eq_false, _root_.mul_eq_zero, IsEmpty.forall_iff]
lemma Pa_δ!₁ (f : Fin n.succ → ) (g : Fin n → ) (j : Fin n) :
@ -404,10 +400,10 @@ lemma P!_δ!₂ (f : Fin n → ) (j : Fin n) : P! f (δ!₂ j) = - f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis!_on_δ!₂_self]
simp only [mul_neg, mul_one]
exact mul_neg_one (f j)
· intro k _ hkj
rw [basis!_on_δ!₂_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp
lemma Pa_δ!₂ (f : Fin n.succ → ) (g : Fin n → ) (j : Fin n) :
@ -425,7 +421,7 @@ lemma Pa_δ!₃ (f : Fin n.succ → ) (g : Fin n → ) : Pa f g (δ!₃) =
rw [Pa]
simp only [ACCSystemCharges.chargesAddCommMonoid_add]
rw [P!_δ!₃, δ!₃_δ₁0, P_δ₁]
simp
exact Rat.add_zero (f 0)
lemma P!_δ!₄ (f : Fin n → ) : P! f (δ!₄) = 0 := by
rw [P!, sum_of_charges]
@ -435,7 +431,7 @@ lemma Pa_δ!₄ (f : Fin n.succ → ) (g : Fin n → ) : Pa f g (δ!₄) =
rw [Pa]
simp only [ACCSystemCharges.chargesAddCommMonoid_add]
rw [P!_δ!₄, δ!₄_δ₂Last, P_δ₂]
simp
exact Rat.add_zero (-f (Fin.last n))
lemma P_δ₁_δ₂ (f : Fin n.succ → ) : P f ∘ δ₂ = - P f ∘ δ₁ := by
funext j
@ -515,18 +511,17 @@ lemma Pa_zero (f : Fin n.succ → ) (g : Fin n → ) (h : Pa f g = 0) :
induction iv
exact h₃.symm
rename_i iv hi
have hivi : iv < n.succ := by omega
have hivi : iv < n.succ := lt_of_succ_lt hiv
have hi2 := hi hivi
have h1 := Pa_δ!₁ f g ⟨iv, by omega
have h2 := Pa_δ!₂ f g ⟨iv, by omega
have h1 := Pa_δ!₁ f g ⟨iv, succ_lt_succ_iff.mp hiv
have h2 := Pa_δ!₂ f g ⟨iv, succ_lt_succ_iff.mp hiv
rw [h] at h1 h2
simp at h1 h2
erw [hi2] at h2
change 0 = _ at h2
simp at h2
rw [h2] at h1
simp at h1
exact h1.symm
exact self_eq_add_left.mp h1
exact hinduc i.val i.prop
lemma Pa_zero! (f : Fin n.succ → ) (g : Fin n → ) (h : Pa f g = 0) :
@ -554,21 +549,22 @@ lemma P'_val (f : Fin n.succ → ) : (P' f).val = P f := by
simp [P', P]
funext i
rw [sum_of_anomaly_free_linear, sum_of_charges]
simp [HSMul.hSMul]
rfl
lemma P!'_val (f : Fin n → ) : (P!' f).val = P! f := by
simp [P!', P!]
funext i
rw [sum_of_anomaly_free_linear, sum_of_charges]
simp [HSMul.hSMul]
rfl
theorem basis_linear_independent : LinearIndependent (@basis n) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change P' f = 0 at h
have h1 : (P' f).val = 0 := by
simp [h]
rfl
have h1 : (P' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [P'_val] at h1
exact P_zero f h1
@ -576,9 +572,10 @@ theorem basis!_linear_independent : LinearIndependent (@basis! n) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change P!' f = 0 at h
have h1 : (P!' f).val = 0 := by
simp [h]
rfl
have h1 : (P!' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [P!'_val] at h1
exact P!_zero f h1
@ -586,9 +583,10 @@ theorem basisa_linear_independent : LinearIndependent (@basisa n) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change Pa' f = 0 at h
have h1 : (Pa' f).val = 0 := by
simp [h]
rfl
have h1 : (Pa' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [Pa'_P'_P!'] at h1
change (P' (f ∘ Sum.inl)).val + (P!' (f ∘ Sum.inr)).val = 0 at h1
rw [P!'_val, P'_val] at h1
@ -650,7 +648,7 @@ lemma basisa_card : Fintype.card ((Fin n.succ) ⊕ (Fin n)) =
FiniteDimensional.finrank (PureU1 (2 * n.succ)).LinSols := by
erw [BasisLinear.finrank_AnomalyFreeLinear]
simp only [Fintype.card_sum, Fintype.card_fin, mul_eq]
omega
exact split_odd n
/-- The basis formed out of our `basisa` vectors. -/
noncomputable def basisaAsBasis :
@ -728,7 +726,6 @@ lemma vectorLikeEven_in_span (S : (PureU1 (2 * n.succ)).LinSols)
rw [ht]
ring
rw [h]
simp
rfl
end VectorLikeEvenPlane

View file

@ -62,7 +62,7 @@ lemma lineInPlaneCond_eq_last' {S : (PureU1 (n.succ.succ)).LinSols} (hS : LineIn
have h1 (i : Fin n) : S.val i.castSucc.castSucc =
- (S.val ((Fin.last n).castSucc) + (S.val ((Fin.last n).succ))) / 2 := by
have h1S := hS (Fin.last n).castSucc ((Fin.last n).succ) i.castSucc.castSucc
(by simp; rw [Fin.ext_iff]; simp)
(by simp; rw [Fin.ext_iff]; exact Nat.ne_add_one ↑(Fin.last n).castSucc)
(by simp; rw [Fin.ext_iff]; simp; omega)
(by simp; rw [Fin.ext_iff]; simp; omega)
simp_all
@ -124,9 +124,9 @@ lemma linesInPlane_four (S : (PureU1 4).Sols) (hS : LineInPlaneCond S.1.1) :
rw [Fin.sum_univ_four] at hLin hcube
rw [sq_eq_sq_iff_eq_or_eq_neg] at hn
simp [not_or] at hn
have l012 := hS 0 1 2 (by simp) (by simp) (by simp)
have l013 := hS 0 1 3 (by simp) (by simp) (by simp)
have l023 := hS 0 2 3 (by simp) (by simp) (by simp)
have l012 := hS 0 1 2 (ne_of_beq_false rfl) (ne_of_beq_false rfl) (ne_of_beq_false rfl)
have l013 := hS 0 1 3 (ne_of_beq_false rfl) (ne_of_beq_false rfl) (ne_of_beq_false rfl)
have l023 := hS 0 2 3 (ne_of_beq_false rfl) (ne_of_beq_false rfl) (ne_of_beq_false rfl)
simp_all [LineInPlaneProp]
have h1 : S.val (2 : Fin 4) = S.val (3 : Fin 4) := by
linear_combination l012 / 2 + -1 * l013 / 2
@ -158,7 +158,7 @@ lemma linesInPlane_four (S : (PureU1 4).Sols) (hS : LineInPlaneCond S.1.1) :
lemma linesInPlane_eq_sq_four {S : (PureU1 4).Sols}
(hS : LineInPlaneCond S.1.1) : ∀ (i j : Fin 4) (_ : i ≠ j),
ConstAbsProp (S.val i, S.val j) := by
refine Prop_two ConstAbsProp (by simp : (0 : Fin 4) ≠ 1) ?_
refine Prop_two ConstAbsProp Fin.zero_ne_one ?_
intro M
let S' := (FamilyPermutations 4).solAction.toFun S M
have hS' : LineInPlaneCond S'.1.1 :=

View file

@ -82,16 +82,16 @@ lemma δa₁_δ!₃ : @δa₁ n = δ!₃ := by
lemma δa₂_δ₁ (j : Fin n) : δa₂ j = δ₁ j.succ := by
rw [Fin.ext_iff]
simp [δa₂, δ₁]
omega
exact Nat.add_comm 1 ↑j
lemma δa₂_δ!₁ (j : Fin n) : δa₂ j = δ!₁ j.castSucc := by
rw [Fin.ext_iff]
simp [δa₂, δ!₁]
rfl
lemma δa₃_δ₃ : @δa₃ n = δ₃ := by
rw [Fin.ext_iff]
simp [δa₃, δ₃]
omega
exact Nat.add_comm 1 n
lemma δa₃_δ!₁ : δa₃ = δ!₁ (Fin.last n) := by
rfl
@ -99,26 +99,24 @@ lemma δa₃_δ!₁ : δa₃ = δ!₁ (Fin.last n) := by
lemma δa₄_δ₂ (j : Fin n.succ) : δa₄ j = δ₂ j := by
rw [Fin.ext_iff]
simp [δa₄, δ₂]
omega
exact Nat.add_comm 1 n
lemma δa₄_δ!₂ (j : Fin n.succ) : δa₄ j = δ!₂ j := by
rw [Fin.ext_iff]
simp [δa₄, δ!₂]
omega
rfl
lemma δ₂_δ!₂ (j : Fin n) : δ₂ j = δ!₂ j := by
rw [Fin.ext_iff]
simp [δ₂, δ!₂]
omega
exact Nat.add_comm n 1
lemma sum_δ (S : Fin (2 * n + 1) → ) :
∑ i, S i = S δ₃ + ∑ i : Fin n, ((S ∘ δ₁) i + (S ∘ δ₂) i) := by
have h1 : ∑ i, S i = ∑ i : Fin (n + 1 + n), S (Fin.cast (split_odd n) i) := by
rw [Finset.sum_equiv (Fin.castOrderIso (split_odd n)).symm.toEquiv]
intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
intro i
simp
· intro i
simp only [mem_univ, Fin.symm_castOrderIso, RelIso.coe_fn_toEquiv]
· exact fun _ _ => rfl
rw [h1]
rw [Fin.sum_univ_add, Fin.sum_univ_add]
simp only [univ_unique, Fin.default_eq_zero, Fin.isValue, sum_singleton, Function.comp_apply]
@ -131,15 +129,12 @@ lemma sum_δ! (S : Fin (2 * n + 1) → ) :
∑ i, S i = S δ!₃ + ∑ i : Fin n, ((S ∘ δ!₁) i + (S ∘ δ!₂) i) := by
have h1 : ∑ i, S i = ∑ i : Fin ((1+n)+n), S (Fin.cast (split_odd! n) i) := by
rw [Finset.sum_equiv (Fin.castOrderIso (split_odd! n)).symm.toEquiv]
intro i
simp only [mem_univ, Fin.castOrderIso, RelIso.coe_fn_toEquiv]
intro i
simp
rw [h1]
rw [Fin.sum_univ_add, Fin.sum_univ_add]
· intro i
simp only [mem_univ, Fin.castOrderIso, RelIso.coe_fn_toEquiv]
· exact fun _ _ => rfl
rw [h1, Fin.sum_univ_add, Fin.sum_univ_add]
simp only [univ_unique, Fin.default_eq_zero, Fin.isValue, sum_singleton, Function.comp_apply]
rw [add_assoc]
rw [Finset.sum_add_distrib]
rw [add_assoc, Finset.sum_add_distrib]
rfl
end theDeltas
@ -363,10 +358,10 @@ lemma P_δ₁ (f : Fin n → ) (j : Fin n) : P f (δ₁ j) = f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis_on_δ₁_self]
simp only [mul_one]
exact Rat.mul_one (f j)
· intro k _ hkj
rw [basis_on_δ₁_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp only [mem_univ, not_true_eq_false, _root_.mul_eq_zero, IsEmpty.forall_iff]
lemma P!_δ!₁ (f : Fin n → ) (j : Fin n) : P! f (δ!₁ j) = f j := by
@ -374,10 +369,10 @@ lemma P!_δ!₁ (f : Fin n → ) (j : Fin n) : P! f (δ!₁ j) = f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis!_on_δ!₁_self]
simp only [mul_one]
exact Rat.mul_one (f j)
· intro k _ hkj
rw [basis!_on_δ!₁_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp only [mem_univ, not_true_eq_false, _root_.mul_eq_zero, IsEmpty.forall_iff]
lemma P_δ₂ (f : Fin n → ) (j : Fin n) : P f (δ₂ j) = - f j := by
@ -385,10 +380,10 @@ lemma P_δ₂ (f : Fin n → ) (j : Fin n) : P f (δ₂ j) = - f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis_on_δ₂_self]
simp only [mul_neg, mul_one]
exact mul_neg_one (f j)
· intro k _ hkj
rw [basis_on_δ₂_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp
lemma P!_δ!₂ (f : Fin n → ) (j : Fin n) : P! f (δ!₂ j) = - f j := by
@ -396,10 +391,10 @@ lemma P!_δ!₂ (f : Fin n → ) (j : Fin n) : P! f (δ!₂ j) = - f j := by
simp [HSMul.hSMul, SMul.smul]
rw [Finset.sum_eq_single j]
· rw [basis!_on_δ!₂_self]
simp only [mul_neg, mul_one]
exact mul_neg_one (f j)
· intro k _ hkj
rw [basis!_on_δ!₂_other hkj]
simp only [mul_zero]
exact Rat.mul_zero (f k)
· simp
lemma P_δ₃ (f : Fin n → ) : P f (δ₃) = 0 := by
@ -416,7 +411,7 @@ lemma Pa_δa₁ (f g : Fin n.succ → ) : Pa f g δa₁ = f 0 := by
nth_rewrite 1 [δa₁_δ₁]
rw [δa₁_δ!₃]
rw [P_δ₁, P!_δ!₃]
simp
exact Rat.add_zero (f 0)
lemma Pa_δa₂ (f g : Fin n.succ → ) (j : Fin n) : Pa f g (δa₂ j) = f j.succ + g j.castSucc := by
rw [Pa]
@ -431,7 +426,7 @@ lemma Pa_δa₃ (f g : Fin n.succ → ) : Pa f g (δa₃) = g (Fin.last n) :=
nth_rewrite 1 [δa₃_δ₃]
rw [δa₃_δ!₁]
rw [P_δ₃, P!_δ!₁]
simp
exact Rat.zero_add (g (Fin.last n))
lemma Pa_δa₄ (f g : Fin n.succ → ) (j : Fin n.succ) : Pa f g (δa₄ j) = - f j - g j := by
rw [Pa]
@ -506,13 +501,13 @@ lemma Pa_zero (f g : Fin n.succ → ) (h : Pa f g = 0) :
induction iv
exact h₃.symm
rename_i iv hi
have hivi : iv < n.succ := by omega
have hivi : iv < n.succ := lt_of_succ_lt hiv
have hi2 := hi hivi
have h1 := Pa_δa₄ f g ⟨iv, hivi⟩
rw [h, hi2] at h1
change 0 = _ at h1
simp at h1
have h2 := Pa_δa₂ f g ⟨iv, by omega
have h2 := Pa_δa₂ f g ⟨iv, succ_lt_succ_iff.mp hiv
simp [h, h1] at h2
exact h2.symm
exact hinduc i.val i.prop
@ -542,21 +537,22 @@ lemma P'_val (f : Fin n → ) : (P' f).val = P f := by
simp [P', P]
funext i
rw [sum_of_anomaly_free_linear, sum_of_charges]
simp [HSMul.hSMul]
rfl
lemma P!'_val (f : Fin n → ) : (P!' f).val = P! f := by
simp [P!', P!]
funext i
rw [sum_of_anomaly_free_linear, sum_of_charges]
simp [HSMul.hSMul]
rfl
theorem basis_linear_independent : LinearIndependent (@basis n) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change P' f = 0 at h
have h1 : (P' f).val = 0 := by
simp [h]
rfl
have h1 : (P' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [P'_val] at h1
exact P_zero f h1
@ -564,9 +560,10 @@ theorem basis!_linear_independent : LinearIndependent (@basis! n) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change P!' f = 0 at h
have h1 : (P!' f).val = 0 := by
simp [h]
rfl
have h1 : (P!' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [P!'_val] at h1
exact P!_zero f h1
@ -574,9 +571,10 @@ theorem basisa_linear_independent : LinearIndependent (@basisa n.succ) := by
apply Fintype.linearIndependent_iff.mpr
intro f h
change Pa' f = 0 at h
have h1 : (Pa' f).val = 0 := by
simp [h]
rfl
have h1 : (Pa' f).val = 0 :=
(AddSemiconjBy.eq_zero_iff (ACCSystemLinear.LinSols.val 0)
(congrFun (congrArg HAdd.hAdd (congrArg ACCSystemLinear.LinSols.val (id (Eq.symm h))))
(ACCSystemLinear.LinSols.val 0))).mp rfl
rw [Pa'_P'_P!'] at h1
change (P' (f ∘ Sum.inl)).val + (P!' (f ∘ Sum.inr)).val = 0 at h1
rw [P!'_val, P'_val] at h1
@ -643,7 +641,7 @@ lemma basisa_card : Fintype.card ((Fin n.succ) ⊕ (Fin n.succ)) =
FiniteDimensional.finrank (PureU1 (2 * n.succ + 1)).LinSols := by
erw [BasisLinear.finrank_AnomalyFreeLinear]
simp only [Fintype.card_sum, Fintype.card_fin]
omega
exact Eq.symm (Nat.two_mul n.succ)
/-- The basis formed out of our basisa vectors. -/
noncomputable def basisaAsBasis :

View file

@ -73,15 +73,8 @@ lemma lineInCubicPerm_self {S : (PureU1 (2 * n + 1)).LinSols} (hS : LineInCubicP
/-- If `lineInCubicPerm S`, then `lineInCubicPerm (M S)` for all permutations `M`. -/
lemma lineInCubicPerm_permute {S : (PureU1 (2 * n + 1)).LinSols}
(hS : LineInCubicPerm S) (M' : (FamilyPermutations (2 * n + 1)).group) :
LineInCubicPerm ((FamilyPermutations (2 * n + 1)).linSolRep M' S) := by
rw [LineInCubicPerm]
intro M
have ht : ((FamilyPermutations (2 * n + 1)).linSolRep M)
((FamilyPermutations (2 * n + 1)).linSolRep M' S)
= (FamilyPermutations (2 * n + 1)).linSolRep (M * M') S := by
simp [(FamilyPermutations (2 * n.succ)).linSolRep.map_mul']
rw [ht]
exact hS (M * M')
LineInCubicPerm ((FamilyPermutations (2 * n + 1)).linSolRep M' S) :=
fun M => hS (M * M')
lemma lineInCubicPerm_swap {S : (PureU1 (2 * n.succ + 1)).LinSols}
(LIC : LineInCubicPerm S) :
@ -108,10 +101,7 @@ lemma P_P_P!_accCube' {S : (PureU1 (2 * n.succ.succ + 1)).LinSols}
rw [P_P_P!_accCube f 0]
rw [← Pa_δa₁ f g]
rw [← hS]
have ht : δ!₁ (0 : Fin n.succ.succ) = δ₁ 1 := by
simp [δ!₁, δ₁]
rw [Fin.ext_iff]
simp
have ht : δ!₁ (0 : Fin n.succ.succ) = δ₁ 1 := rfl
nth_rewrite 1 [ht]
rw [P_δ₁]
have h1 := Pa_δa₁ f g
@ -125,7 +115,7 @@ lemma P_P_P!_accCube' {S : (PureU1 (2 * n.succ.succ + 1)).LinSols}
rw [δa₄_δ!₂]
have h0 : (δa₂ (0 : Fin n.succ)) = δ!₁ 0 := by
rw [δa₂_δ!₁]
simp
exact ht
rw [h0, δa₁_δ!₃]
ring
@ -149,9 +139,9 @@ lemma lineInCubicPerm_last_perm {S : (PureU1 (2 * n.succ.succ + 1)).LinSols}
(LIC : LineInCubicPerm S) : LineInPlaneCond S := by
refine @Prop_three (2 * n.succ.succ + 1) LineInPlaneProp S (δ!₂ 0) (δ!₁ 0)
δ!₃ ?_ ?_ ?_ ?_
· simp [Fin.ext_iff, δ!₂, δ!₁]
· simp [Fin.ext_iff, δ!₂, δ!₃]
· simp [Fin.ext_iff, δ!₁, δ!₃]
· exact ne_of_beq_false rfl
· exact ne_of_beq_false rfl
· exact ne_of_beq_false rfl
· exact fun M => lineInCubicPerm_last_cond (lineInCubicPerm_permute LIC M)
lemma lineInCubicPerm_constAbs {S : (PureU1 (2 * n.succ.succ + 1)).LinSols}

View file

@ -37,13 +37,8 @@ section Charges
def chargeMap {n : } (f : PermGroup n) :
(PureU1 n).Charges →ₗ[] (PureU1 n).Charges where
toFun S := S ∘ f.toFun
map_add' S T := by
funext i
simp
map_smul' a S := by
funext i
simp [HSMul.hSMul]
-- rw [show Rat.cast a = a from rfl]
map_add' _ _ := rfl
map_smul' _ _:= rfl
open PureU1Charges in
@ -51,17 +46,8 @@ open PureU1Charges in
@[simp]
def permCharges {n : } : Representation (PermGroup n) (PureU1 n).Charges where
toFun f := chargeMap f⁻¹
map_mul' f g := by
simp only [PermGroup, mul_inv_rev]
apply LinearMap.ext
intro S
funext i
rfl
map_one' := by
apply LinearMap.ext
intro S
funext i
rfl
map_mul' f g := by rfl
map_one' := by rfl
lemma accGrav_invariant {n : } (f : (PermGroup n)) (S : (PureU1 n).Charges) :
PureU1.accGrav n (permCharges f S) = accGrav n S := by

View file

@ -42,13 +42,8 @@ def chargesMapOfSpeciesMap {n m : } (f : (SMSpecies n).Charges →ₗ[] (S
def speciesFamilyProj {m n : } (h : n ≤ m) :
(SMSpecies m).Charges →ₗ[] (SMSpecies n).Charges where
toFun S := S ∘ Fin.castLE h
map_add' S T := by
funext i
simp
map_smul' a S := by
funext i
simp [HSMul.hSMul]
--rw [show Rat.cast a = a from rfl]
map_add' _ _ := rfl
map_smul' _ _ := rfl
/-- The projection of the `m`-family charges onto the first `n`-family charges. -/
def familyProjection {m n : } (h : n ≤ m) : (SMCharges m).Charges →ₗ[] (SMCharges n).Charges :=
@ -77,7 +72,7 @@ def speciesEmbed (m n : ) :
by_cases hi : i.val < m
· erw [dif_pos hi, dif_pos hi]
· erw [dif_neg hi, dif_neg hi]
simp
exact Eq.symm (Rat.mul_zero a)
/-- The embedding of the `m`-family charges onto the `n`-family charges, with all
other charges zero. -/
@ -89,14 +84,9 @@ a universal manor. -/
@[simps!]
def speciesFamilyUniversial (n : ) :
(SMSpecies 1).Charges →ₗ[] (SMSpecies n).Charges where
toFun S _ := S ⟨0, by simp⟩
map_add' S T := by
funext _
simp
map_smul' a S := by
funext i
simp [HSMul.hSMul]
--rw [show Rat.cast a = a from rfl]
toFun S _ := S ⟨0, Nat.zero_lt_succ 0⟩
map_add' _ _ := rfl
map_smul' _ _ := rfl
/-- The embedding of the `1`-family charges into the `n`-family charges in
a universal manor. -/

View file

@ -125,8 +125,7 @@ def bijection : linearParameters ≃ (SMNoGrav 1).LinSols where
repeat erw [speciesVal]
simp only [asCharges, neg_add_rev]
ring
· simp only [toSpecies_apply]
rfl
· rfl
right_inv S := by
simp only [Fin.isValue, toSpecies_apply]
apply ACCSystemLinear.LinSols.ext

View file

@ -56,7 +56,7 @@ lemma toSMSpecies_toSpecies_inv (i : Fin 6) (f : Fin 6 → Fin n → ) :
simp
lemma toSpecies_one (S : (SMνCharges 1).Charges) (j : Fin 6) :
toSpecies j S ⟨0, by simp⟩ = S j := by
toSpecies j S ⟨0, zero_lt_succ 0⟩ = S j := by
match j with
| 0 => rfl
| 1 => rfl

View file

@ -141,7 +141,7 @@ lemma sum_familyUniversal_three {n : } (S : (SMνCharges 1).Charges)
simp only [SMνSpecies_numberCharges, toSpecies_apply, Fin.zero_eta, Fin.isValue]
rw [Finset.mul_sum]
apply Finset.sum_congr
· simp only
· rfl
· intro i _
erw [toSpecies_familyUniversal]
simp only [SMνSpecies_numberCharges, Fin.zero_eta, Fin.isValue, toSpecies_apply]

View file

@ -279,7 +279,7 @@ lemma B_sum_is_sol (f : Fin 7 → ) : (SM 3).IsSolution (∑ i, f i • B i)
have h : accGrav (B i) = 0 := by
fin_cases i <;> rfl
rw [h]
simp)
exact DistribMulAction.smul_zero (f i))
(by
rw [map_sum]
apply Fintype.sum_eq_zero
@ -288,7 +288,7 @@ lemma B_sum_is_sol (f : Fin 7 → ) : (SM 3).IsSolution (∑ i, f i • B i)
have h : accSU2 (B i) = 0 := by
fin_cases i <;> rfl
rw [h]
simp)
exact DistribMulAction.smul_zero (f i))
(by
rw [map_sum]
apply Fintype.sum_eq_zero
@ -297,7 +297,7 @@ lemma B_sum_is_sol (f : Fin 7 → ) : (SM 3).IsSolution (∑ i, f i • B i)
have h : accSU3 (B i) = 0 := by
fin_cases i <;> rfl
rw [h]
simp)
exact DistribMulAction.smul_zero (f i))
(B_in_accCube f)
use X
rfl

View file

@ -80,7 +80,7 @@ lemma add_AFL_quad (S : (PlusU1 n).LinSols) (a b : ) :
lemma add_quad (S : (PlusU1 n).QuadSols) (a b : ) :
accQuad (a • S.val + b • (BL n).val) = 0 := by
rw [add_AFL_quad, quadSol S]
simp
exact Rat.mul_zero (a ^ 2)
/-- The `QuadSol` obtained by adding $B-L$ to a `QuadSol`. -/
def addQuad (S : (PlusU1 n).QuadSols) (a b : ) : (PlusU1 n).QuadSols :=

View file

@ -85,7 +85,7 @@ lemma Bi_sum_quad (i : Fin 11) (f : Fin 11 → ) :
· rw [quadBiLin.map_smul₂]
· intro k hij
rw [quadBiLin.map_smul₂, Bi_Bj_quad hij.symm]
simp
exact Rat.mul_zero (f k)
/-- The coefficents of the quadratic equation in our basis. -/
@[simp]

View file

@ -106,7 +106,7 @@ lemma quadSolToSolInv_1 (S : (PlusU1 n).Sols) :
lemma quadSolToSolInv_α₁_α₂_zero (S : (PlusU1 n).Sols) (h : α₁ S.1 = 0) :
α₁ (quadSolToSolInv S).1 = 0 ∧ α₂ (quadSolToSolInv S).1 = 0 := by
rw [quadSolToSolInv_1, α₂_AF S, h]
simp
exact Prod.mk_eq_zero.mp rfl
lemma quadSolToSolInv_α₁_α₂_neq_zero (S : (PlusU1 n).Sols) (h : α₁ S.1 ≠ 0) :
¬ (α₁ (quadSolToSolInv S).1 = 0 ∧ α₂ (quadSolToSolInv S).1 = 0) := by

View file

@ -489,7 +489,7 @@ lemma eq_standParam_of_fstRowThdColRealCond {V : CKMMatrix} (hb : [V]ud ≠ 0
(hV : FstRowThdColRealCond V) : V = standParam (θ₁₂ ⟦V⟧) (θ₁₃ ⟦V⟧) (θ₂₃ ⟦V⟧) (- arg [V]ub) := by
have hb' : VubAbs ⟦V⟧ ≠ 1 := by
rw [ud_us_neq_zero_iff_ub_neq_one] at hb
simp [VAbs, hb]
exact hb
have h1 : ofReal (√(VAbs 0 0 ⟦V⟧ ^ 2 + VAbs 0 1 ⟦V⟧ ^ 2) *
↑√(VAbs 0 0 ⟦V⟧ ^ 2 + VAbs 0 1 ⟦V⟧ ^ 2)) = ofReal (VAbs 0 0 ⟦V⟧ ^ 2 + VAbs 0 1 ⟦V⟧ ^ 2) := by
rw [Real.mul_self_sqrt]
@ -552,16 +552,16 @@ lemma eq_standParam_of_ubOnePhaseCond {V : CKMMatrix} (hV : ubOnePhaseCond V) :
have h1 : VubAbs ⟦V⟧ = 1 := by
simp [VAbs]
rw [hV.2.2.2.1]
simp
exact AbsoluteValue.map_one Complex.abs
refine eq_rows V ?_ ?_ hV.2.2.2.2.1
· funext i
fin_cases i
· simp [uRow, standParam, standParamAsMatrix]
rw [C₁₃_eq_cos_θ₁₃ ⟦V⟧, C₁₃_of_Vub_eq_one h1, hV.1]
simp only [ofReal_zero, mul_zero]
exact Eq.symm (mul_eq_zero_of_right (cos ↑(θ₁₂ ⟦V⟧)) rfl)
· simp [uRow, standParam, standParamAsMatrix]
rw [C₁₃_eq_cos_θ₁₃ ⟦V⟧, C₁₃_of_Vub_eq_one h1, hV.2.1]
simp only [ofReal_zero, mul_zero]
exact Eq.symm (mul_eq_zero_of_right (sin ↑(θ₁₂ ⟦V⟧)) rfl)
· simp [uRow, standParam, standParamAsMatrix]
rw [S₁₃_eq_sin_θ₁₃ ⟦V⟧, S₁₃]
simp [VAbs]
@ -589,7 +589,7 @@ lemma eq_standParam_of_ubOnePhaseCond {V : CKMMatrix} (hV : ubOnePhaseCond V) :
rw [h3, S₂₃_of_Vub_eq_one h1, hV.2.2.2.2.2.2]
· simp [cRow, standParam, standParamAsMatrix]
rw [C₁₃_eq_cos_θ₁₃ ⟦V⟧, C₁₃_of_Vub_eq_one h1, hV.2.2.1]
simp
exact Eq.symm (mul_eq_zero_of_right (sin ↑(θ₂₃ ⟦V⟧)) rfl)
theorem exists_δ₁₃ (V : CKMMatrix) :
∃ (δ₃ : ), V ≈ standParam (θ₁₂ ⟦V⟧) (θ₁₃ ⟦V⟧) (θ₂₃ ⟦V⟧) δ₃ := by
@ -639,7 +639,7 @@ theorem eq_standardParameterization_δ₃ (V : CKMMatrix) :
· simp at h
have h1 : δ₁₃ ⟦V⟧ = 0 := by
rw [hSV, δ₁₃, h]
simp
exact arg_zero
rw [h1]
rw [mulExpδ₁₃_on_param_eq_zero_iff, Vs_zero_iff_cos_sin_zero] at h
refine phaseShiftRelation_equiv.trans hδ₃ ?_

View file

@ -193,20 +193,15 @@ def mk₃ (f : V × V × V→ ) (map_smul : ∀ a S T L, f (a • S, T, L) =
rw [swap₁, map_add, swap₁, swap₁ S2 S T])
(by
intro L T
simp only
rw [swap₂])).toLinearMap
exact swap₂ S L T)).toLinearMap
map_add' S1 S2 := by
apply LinearMap.ext
intro T
apply LinearMap.ext
intro S
simp [BiLinearSymm.mk₂, map_add]
map_smul' a S := by
apply LinearMap.ext
intro T
apply LinearMap.ext
intro L
simp [BiLinearSymm.mk₂, map_smul]
exact map_add S1 S2 T S
map_smul' a S :=
LinearMap.ext fun T => LinearMap.ext fun L => map_smul a S T L
swap₁' := swap₁
swap₂' := swap₂
@ -248,8 +243,7 @@ lemma map_add₃ (f : TriLinearSymm V) (S T L1 L2 : V) :
/-- Fixing the second and third input vectors, the resulting linear map. -/
def toLinear₁ (f : TriLinearSymm V) (T L : V) : V →ₗ[] where
toFun S := f S T L
map_add' S1 S2 := by
simp only [f.map_add₁]
map_add' S1 S2 := map_add₁ f S1 S2 T L
map_smul' a S := by
simp only [f.map_smul₁]
rfl

View file

@ -47,13 +47,8 @@ lemma coe_inv (A : SO3) : (A⁻¹).1 = A.1⁻¹:=
/-- The inclusion of `SO(3)` into `GL (Fin 3) `. -/
def toGL : SO(3) →* GL (Fin 3) where
toFun A := ⟨A.1, (A⁻¹).1, A.2.2, mul_eq_one_comm.mpr A.2.2⟩
map_one' := by
simp
rfl
map_mul' x y := by
simp only [_root_.mul_inv_rev, coe_inv]
ext
rfl
map_one' := (GeneralLinearGroup.ext_iff _ 1).mpr fun _=> congrFun rfl
map_mul' _ _ := (GeneralLinearGroup.ext_iff _ _).mpr fun _ => congrFun rfl
lemma subtype_val_eq_toGL : (Subtype.val : SO3 → Matrix (Fin 3) (Fin 3) ) =
Units.val ∘ toGL.toFun :=
@ -70,14 +65,7 @@ lemma toGL_injective : Function.Injective toGL := by
def toProd : SO(3) →* (Matrix (Fin 3) (Fin 3) ) × (Matrix (Fin 3) (Fin 3) )ᵐᵒᵖ :=
MonoidHom.comp (Units.embedProduct _) toGL
lemma toProd_eq_transpose : toProd A = (A.1, ⟨A.1ᵀ⟩) := by
simp only [toProd, Units.embedProduct, coe_units_inv, MulOpposite.op_inv, toGL, coe_inv,
MonoidHom.coe_comp, MonoidHom.coe_mk, OneHom.coe_mk, Function.comp_apply, Prod.mk.injEq,
true_and]
refine MulOpposite.unop_inj.mp ?_
simp only [MulOpposite.unop_inv, MulOpposite.unop_op]
rw [← coe_inv]
rfl
lemma toProd_eq_transpose : toProd A = (A.1, ⟨A.1ᵀ⟩) := rfl
lemma toProd_injective : Function.Injective toProd := by
intro A B h
@ -131,7 +119,7 @@ lemma det_minus_id (A : SO(3)) : det (A.1 - 1) = 0 := by
_ = det A.1 * det (1 - A.1ᵀ) := by rw [← det_mul, mul_sub, mul_one]
_ = det (1 - A.1ᵀ) := by simp [A.2.1]
_ = det (1 - A.1ᵀ)ᵀ := by rw [det_transpose]
_ = det (1 - A.1) := by simp
_ = det (1 - A.1) := rfl
_ = det (- (A.1 - 1)) := by simp
_ = (- 1) ^ 3 * det (A.1 - 1) := by simp only [det_neg, Fintype.card_fin, neg_mul, one_mul]
_ = - det (A.1 - 1) := by simp [pow_three]
@ -145,7 +133,7 @@ lemma det_id_minus (A : SO(3)) : det (1 - A.1) = 0 := by
_ = (- 1) ^ 3 * det (A.1 - 1) := by simp only [det_neg, Fintype.card_fin, neg_mul, one_mul]
_ = - det (A.1 - 1) := by simp [pow_three]
rw [h1, det_minus_id]
simp only [neg_zero]
exact neg_zero
@[simp]
lemma one_in_spectrum (A : SO(3)) : 1 ∈ spectrum (A.1) := by

View file

@ -83,7 +83,7 @@ def checkMissingImports (modData : ModuleData) (reqImports : Array Name) :
def main (_ : List String) : IO UInt32 := do
initSearchPath (← findSysroot)
let mods : Name := `HepLean
let mods : Name := `HepLean
let imp : Import := {module := mods}
let mFile ← findOLean imp.module
unless (← mFile.pathExists) do