feat: Property of time-order w.r.t. superCommute
This commit is contained in:
parent
a79d0f8fed
commit
c2d89cc093
8 changed files with 781 additions and 8 deletions
|
@ -280,6 +280,40 @@ lemma koszulSign_swap_eq_rel {ψ φ : 𝓕} (h1 : le φ ψ) (h2 : le ψ φ) : (
|
|||
apply Wick.koszulSignInsert_eq_perm
|
||||
exact List.Perm.append_left φs (List.Perm.swap ψ φ φs')
|
||||
|
||||
lemma koszulSign_eq_rel_eq_stat_append {ψ φ : 𝓕} [IsTrans 𝓕 le] [IsTotal 𝓕 le]
|
||||
(h1 : le φ ψ) (h2 : le ψ φ) (hq : q ψ = q φ) : (φs : List 𝓕) →
|
||||
koszulSign q le (φ :: ψ :: φs) = koszulSign q le φs := by
|
||||
intro φs
|
||||
simp [koszulSign, ← mul_assoc]
|
||||
trans 1 * koszulSign q le φs
|
||||
swap
|
||||
simp
|
||||
congr
|
||||
simp [koszulSignInsert]
|
||||
simp_all
|
||||
rw [koszulSignInsert_eq_rel_eq_stat q le h1 h2 hq]
|
||||
simp
|
||||
|
||||
lemma koszulSign_eq_rel_eq_stat {ψ φ : 𝓕} [IsTrans 𝓕 le] [IsTotal 𝓕 le]
|
||||
(h1 : le φ ψ) (h2 : le ψ φ) (hq : q ψ = q φ) : (φs' φs : List 𝓕) →
|
||||
koszulSign q le (φs' ++ φ :: ψ :: φs) = koszulSign q le (φs' ++ φs)
|
||||
| [], φs => by
|
||||
simp
|
||||
exact koszulSign_eq_rel_eq_stat_append q le h1 h2 hq φs
|
||||
| φ'' :: φs', φs => by
|
||||
simp [koszulSign]
|
||||
rw [koszulSign_eq_rel_eq_stat h1 h2 hq φs' φs]
|
||||
simp
|
||||
left
|
||||
trans koszulSignInsert q le φ'' (φ :: ψ :: (φs' ++ φs) )
|
||||
apply koszulSignInsert_eq_perm
|
||||
refine List.Perm.symm (List.perm_cons_append_cons φ ?_)
|
||||
exact List.Perm.symm List.perm_middle
|
||||
rw [koszulSignInsert_eq_remove_same_stat_append q le ]
|
||||
simp_all
|
||||
simp_all
|
||||
simp_all
|
||||
|
||||
lemma koszulSign_of_sorted : (φs : List 𝓕)
|
||||
→ (hs : List.Sorted le φs) → koszulSign q le φs = 1
|
||||
| [], _ => by
|
||||
|
@ -351,4 +385,53 @@ lemma koszulSign_of_append_eq_insertionSort [IsTotal 𝓕 le] [IsTrans 𝓕 le]
|
|||
refine List.Perm.append_left φs'' ?_
|
||||
exact List.Perm.symm (List.perm_insertionSort le φs)
|
||||
|
||||
/-!
|
||||
|
||||
# koszulSign with permutations
|
||||
|
||||
-/
|
||||
|
||||
lemma koszulSign_perm_eq_append [IsTotal 𝓕 le] [IsTrans 𝓕 le] (φ : 𝓕) ( φs φs' φs2 : List 𝓕)
|
||||
(hp : φs.Perm φs') : (h : ∀ φ' ∈ φs, le φ φ' ∧ le φ' φ) →
|
||||
koszulSign q le (φs ++ φs2) = koszulSign q le (φs' ++ φs2) := by
|
||||
let motive (φs φs' : List 𝓕) (hp : φs.Perm φs') : Prop :=
|
||||
(h : ∀ φ' ∈ φs, le φ φ' ∧ le φ' φ) →
|
||||
koszulSign q le (φs ++ φs2) = koszulSign q le (φs' ++ φs2)
|
||||
change motive φs φs' hp
|
||||
apply List.Perm.recOn
|
||||
· simp [motive]
|
||||
· intro x l1 l2 h ih hxφ
|
||||
simp_all [motive]
|
||||
simp [koszulSign, ih]
|
||||
left
|
||||
apply koszulSignInsert_eq_perm
|
||||
exact (List.perm_append_right_iff φs2).mpr h
|
||||
· intro x y l h
|
||||
simp_all [motive]
|
||||
apply Wick.koszulSign_swap_eq_rel_cons
|
||||
exact IsTrans.trans y φ x h.1.2 h.2.1.1
|
||||
exact IsTrans.trans x φ y h.2.1.2 h.1.1
|
||||
· intro l1 l2 l3 h1 h2 ih1 ih2 h
|
||||
simp_all [motive]
|
||||
refine (ih2 ?_)
|
||||
intro φ' hφ
|
||||
refine h φ' ?_
|
||||
exact (List.Perm.mem_iff (id (List.Perm.symm h1))).mp hφ
|
||||
|
||||
lemma koszulSign_perm_eq [IsTotal 𝓕 le] [IsTrans 𝓕 le] (φ : 𝓕) : (φs1 φs φs' φs2 : List 𝓕) →
|
||||
(h : ∀ φ' ∈ φs, le φ φ' ∧ le φ' φ) → (hp : φs.Perm φs') →
|
||||
koszulSign q le (φs1 ++ φs ++ φs2) = koszulSign q le (φs1 ++ φs' ++ φs2)
|
||||
| [], φs, φs', φs2, h, hp => by
|
||||
simp
|
||||
exact koszulSign_perm_eq_append q le φ φs φs' φs2 hp h
|
||||
| φ1 :: φs1, φs, φs', φs2, h, hp => by
|
||||
simp only [koszulSign, List.append_eq]
|
||||
have ih := koszulSign_perm_eq φ φs1 φs φs' φs2 h hp
|
||||
rw [ih]
|
||||
congr 1
|
||||
apply koszulSignInsert_eq_perm
|
||||
refine (List.perm_append_right_iff φs2).mpr ?_
|
||||
exact List.Perm.append_left φs1 hp
|
||||
|
||||
|
||||
end Wick
|
||||
|
|
|
@ -248,4 +248,42 @@ lemma koszulSignInsert_of_le_mem (φ0 : 𝓕) : (φs : List 𝓕) → (h : ∀
|
|||
· exact h φ1 (List.mem_cons_self _ _)
|
||||
|
||||
|
||||
lemma koszulSignInsert_eq_rel_eq_stat {ψ φ : 𝓕} [IsTotal 𝓕 le] [IsTrans 𝓕 le]
|
||||
(h1 : le φ ψ) (h2 : le ψ φ) (hq : q ψ = q φ) : (φs : List 𝓕) →
|
||||
koszulSignInsert q le φ φs = koszulSignInsert q le ψ φs
|
||||
| [] => by
|
||||
simp [koszulSignInsert]
|
||||
| φ' :: φs => by
|
||||
simp [koszulSignInsert]
|
||||
simp_all
|
||||
by_cases hr : le φ φ'
|
||||
· simp [hr]
|
||||
have h1' : le ψ φ' := by
|
||||
apply IsTrans.trans ψ φ φ' h2 hr
|
||||
simp [h1']
|
||||
exact koszulSignInsert_eq_rel_eq_stat h1 h2 hq φs
|
||||
· have hψφ' : ¬ le ψ φ' := by
|
||||
intro hψφ'
|
||||
apply hr
|
||||
apply IsTrans.trans φ ψ φ' h1 hψφ'
|
||||
simp [hr, hψφ']
|
||||
rw [koszulSignInsert_eq_rel_eq_stat h1 h2 hq φs]
|
||||
|
||||
lemma koszulSignInsert_eq_remove_same_stat_append {ψ φ φ' : 𝓕} [IsTotal 𝓕 le] [IsTrans 𝓕 le]
|
||||
(h1 : le φ ψ) (h2 : le ψ φ) (hq : q ψ = q φ) : ( φs : List 𝓕) →
|
||||
koszulSignInsert q le φ' (φ :: ψ :: φs) = koszulSignInsert q le φ' φs := by
|
||||
intro φs
|
||||
simp_all [koszulSignInsert]
|
||||
by_cases hφ'φ : le φ' φ
|
||||
· have hφ'ψ : le φ' ψ := by
|
||||
apply IsTrans.trans φ' φ ψ hφ'φ h1
|
||||
simp [hφ'φ, hφ'ψ]
|
||||
· have hφ'ψ : ¬ le φ' ψ := by
|
||||
intro hφ'ψ
|
||||
apply hφ'φ
|
||||
apply IsTrans.trans φ' ψ φ hφ'ψ h2
|
||||
simp_all [hφ'φ, hφ'ψ]
|
||||
|
||||
|
||||
|
||||
end Wick
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue