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.QFT.PerturbationTheory.FieldStatistics.ExchangeSign
public import Physlib.Mathematics.List
import all Mathlib.Data.List.SortKoszul sign insert
@[expose] public section
Gives a factor of -1 when inserting a into a list List I in the ordered position
for each fermion-fermion cross.
def koszulSignInsert {π : Type} (q : π β FieldStatistic) (le : π β π β Prop)
[DecidableRel le] (Ο : π) : List π β β
| [] => 1
| Ο' :: Οs => if le Ο Ο' then koszulSignInsert q le Ο Οs else
if q Ο = fermionic β§ q Ο' = fermionic then - koszulSignInsert q le Ο Οs else
koszulSignInsert q le Ο Οs
When inserting a boson the koszulSignInsert is always 1.
π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πha:q Ο = bosonicΟ':πΟs:List πβ’ (if le Ο Ο' then 1 else if bosonic = fermionic β§ q Ο' = fermionic then -1 else 1) = 1
simp only [reduceCtorEq, false_and, βreduceIte, ite_self] All goals completed! π
@[simp]
lemma koszulSignInsert_mul_self (Ο : π) :
(Οs : List π) β koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs = 1
| [] => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πβ’ koszulSignInsert q le Ο [] * koszulSignInsert q le Ο [] = 1 by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πβ’ koszulSignInsert q le Ο [] * koszulSignInsert q le Ο [] = 1
simp [koszulSignInsert] All goals completed! π
| Ο' :: Οs => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) * koszulSignInsert q le Ο (Ο' :: Οs) = 1 by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) * koszulSignInsert q le Ο (Ο' :: Οs) = 1
simp only [koszulSignInsert, mul_ite, ite_mul, neg_mul, mul_neg] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πβ’ (if le Ο Ο' then
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then
-if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1
by_cases hr : le Ο Ο' pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:le Ο Ο'β’ (if le Ο Ο' then
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then
-if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'β’ (if le Ο Ο' then
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then
-if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:le Ο Ο'β’ (if le Ο Ο' then
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then
-if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1 simp only [hr, βreduceIte] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:le Ο Ο'β’ koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs = 1
rw [koszulSignInsert_mul_self pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:le Ο Ο'β’ 1 = 1 All goals completed! π] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'β’ (if le Ο Ο' then
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then
-if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if le Ο Ο' then koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1 simp only [hr, βreduceIte] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'β’ (if q Ο = fermionic β§ q Ο' = fermionic then
-if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1
by_cases hq : q Ο = fermionic β§ q Ο' = fermionic pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:q Ο = fermionic β§ q Ο' = fermionicβ’ (if q Ο = fermionic β§ q Ο' = fermionic then
-if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:Β¬(q Ο = fermionic β§ q Ο' = fermionic)β’ (if q Ο = fermionic β§ q Ο' = fermionic then
-if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:q Ο = fermionic β§ q Ο' = fermionicβ’ (if q Ο = fermionic β§ q Ο' = fermionic then
-if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1 simp only [hq, and_self, βreduceIte, neg_neg] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:q Ο = fermionic β§ q Ο' = fermionicβ’ koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs = 1
rw [koszulSignInsert_mul_self pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:q Ο = fermionic β§ q Ο' = fermionicβ’ 1 = 1 All goals completed! π] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:Β¬(q Ο = fermionic β§ q Ο' = fermionic)β’ (if q Ο = fermionic β§ q Ο' = fermionic then
-if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs
else
if q Ο = fermionic β§ q Ο' = fermionic then -(koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs)
else koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs) =
1 simp only [hq, βreduceIte] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:Β¬(q Ο = fermionic β§ q Ο' = fermionic)β’ koszulSignInsert q le Ο Οs * koszulSignInsert q le Ο Οs = 1
rw [koszulSignInsert_mul_self neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ':πΟs:List πhr:Β¬le Ο Ο'hq:Β¬(q Ο = fermionic β§ q Ο' = fermionic)β’ 1 = 1 All goals completed! π] All goals completed! π
lemma koszulSignInsert_le_forall (Ο : π) (Οs : List π) (hi : β Ο', le Ο Ο') :
koszulSignInsert q le Ο Οs = 1 := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟs:List πhi:β (Ο' : π), le Ο Ο'β’ koszulSignInsert q le Ο Οs = 1
induction Οs with
| nil => nil π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'β’ koszulSignInsert q le Ο [] = 1 rfl All goals completed! π
| cons Ο' Οs ih => cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ koszulSignInsert q le Ο (Ο' :: Οs) = 1
simp only [koszulSignInsert] cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
1
rw [ih cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ (if le Ο Ο' then 1 else if q Ο = fermionic β§ q Ο' = fermionic then -1 else 1) = 1 cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ (if le Ο Ο' then 1 else if q Ο = fermionic β§ q Ο' = fermionic then -1 else 1) = 1] cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ (if le Ο Ο' then 1 else if q Ο = fermionic β§ q Ο' = fermionic then -1 else 1) = 1
simp only [ite_eq_left_iff, ite_eq_right_iff, and_imp] cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1β’ Β¬le Ο Ο' β q Ο = fermionic β q Ο' = fermionic β -1 = 1
intro h cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πhi:β (Ο' : π), le Ο Ο'Ο':πΟs:List πih:koszulSignInsert q le Ο Οs = 1h:Β¬le Ο Ο'β’ q Ο = fermionic β q Ο' = fermionic β -1 = 1
exact False.elim (h (hi Ο')) All goals completed! π
lemma koszulSignInsert_ge_forall_append (Οs : List π) (Ο' Ο : π) (hi : β Ο'', le Ο'' Ο) :
koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο]) := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟ':πΟ:πhi:β (Ο'' : π), le Ο'' Οβ’ koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])
induction Οs with
| nil => nil π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' Οβ’ koszulSignInsert q le Ο' [] = koszulSignInsert q le Ο' ([] ++ [Ο]) simp [koszulSignInsert, hi] All goals completed! π
| cons Ο'' Οs ih => cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])β’ koszulSignInsert q le Ο' (Ο'' :: Οs) = koszulSignInsert q le Ο' (Ο'' :: Οs ++ [Ο])
simp only [koszulSignInsert, List.cons_append] cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])β’ (if le Ο' Ο'' then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο])
by_cases hr : le Ο' Ο'' pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:le Ο' Ο''β’ (if le Ο' Ο'' then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο])neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:Β¬le Ο' Ο''β’ (if le Ο' Ο'' then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο])
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:le Ο' Ο''β’ (if le Ο' Ο'' then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) rw [if_pos hr, pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:le Ο' Ο''β’ koszulSignInsert q le Ο' Οs =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π if_pos hr, pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:le Ο' Ο''β’ koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π ih pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:le Ο' Ο''β’ koszulSignInsert q le Ο' (Οs ++ [Ο]) = koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:Β¬le Ο' Ο''β’ (if le Ο' Ο'' then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) rw [if_neg hr, neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:Β¬le Ο' Ο''β’ (if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if le Ο' Ο'' then koszulSignInsert q le Ο' (Οs ++ [Ο])
else
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π if_neg hr, neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:Β¬le Ο' Ο''β’ (if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs) =
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π ih neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ':πΟ:πhi:β (Ο'' : π), le Ο'' ΟΟ'':πΟs:List πih:koszulSignInsert q le Ο' Οs = koszulSignInsert q le Ο' (Οs ++ [Ο])hr:Β¬le Ο' Ο''β’ (if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο])) =
if q Ο' = fermionic β§ q Ο'' = fermionic then -koszulSignInsert q le Ο' (Οs ++ [Ο])
else koszulSignInsert q le Ο' (Οs ++ [Ο]) All goals completed! π] All goals completed! π
lemma koszulSignInsert_eq_filter (Ο : π) : (Οs : List π) β
koszulSignInsert q le Ο Οs =
koszulSignInsert q le Ο (List.filter (fun i => decide (Β¬ le Ο i)) Οs)
| [] => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πβ’ koszulSignInsert q le Ο [] = koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) []) by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πβ’ koszulSignInsert q le Ο [] = koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) [])
simp [koszulSignInsert] All goals completed! π
| Ο1 :: Οs => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πβ’ koszulSignInsert q le Ο (Ο1 :: Οs) = koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πβ’ koszulSignInsert q le Ο (Ο1 :: Οs) = koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs))
dsimp only [koszulSignInsert, Fin.isValue] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πβ’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs))
simp only [List.filter, decide_not] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πβ’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο
(match !decide (le Ο Ο1) with
| true => Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs
| false => List.filter (fun i => !decide (le Ο i)) Οs)
by_cases h : le Ο Ο1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο
(match !decide (le Ο Ο1) with
| true => Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs
| false => List.filter (fun i => !decide (le Ο i)) Οs)neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο
(match !decide (le Ο Ο1) with
| true => Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs
| false => List.filter (fun i => !decide (le Ο i)) Οs)
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο
(match !decide (le Ο Ο1) with
| true => Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs
| false => List.filter (fun i => !decide (le Ο i)) Οs) simp only [h, βreduceIte, decide_true, Bool.not_true] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
rw [koszulSignInsert_eq_filter pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
congr pos.e_a.e_p π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:le Ο Ο1β’ (fun i => decide Β¬le Ο i) = fun i => !decide (le Ο i)
simp All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if le Ο Ο1 then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο
(match !decide (le Ο Ο1) with
| true => Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs
| false => List.filter (fun i => !decide (le Ο i)) Οs) simp only [h, βreduceIte, decide_false, Bool.not_false] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
koszulSignInsert q le Ο (Ο1 :: List.filter (fun i => !decide (le Ο i)) Οs)
dsimp only [Fin.isValue, koszulSignInsert] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο1 then koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
simp only [h, βreduceIte] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
rw [koszulSignInsert_eq_filter neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)]neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
congr neg.e_t.e_a.e_p π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (fun i => decide Β¬le Ο i) = fun i => !decide (le Ο i)neg.e_e.e_a.e_p π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (fun i => decide Β¬le Ο i) = fun i => !decide (le Ο i)
Β· neg.e_t.e_a.e_p π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (fun i => decide Β¬le Ο i) = fun i => !decide (le Ο i) simp only [decide_not] All goals completed! π
Β· neg.e_e.e_a.e_p π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πh:Β¬le Ο Ο1β’ (fun i => decide Β¬le Ο i) = fun i => !decide (le Ο i) simp All goals completed! π
lemma koszulSignInsert_eq_cons [Std.Total le] (Ο : π) (Οs : List π) :
koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (Ο :: Οs) := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (Ο :: Οs)
simp only [koszulSignInsert, and_self] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
if le Ο Ο then koszulSignInsert q le Ο Οs
else if q Ο = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
have h1 : le Ο Ο := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (Ο :: Οs) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πh1:le Ο Οβ’ koszulSignInsert q le Ο Οs =
if le Ο Ο then koszulSignInsert q le Ο Οs
else if q Ο = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
simpa only [or_self] using Std.Total.total (r := le) Ο Ο π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πh1:le Ο Οβ’ koszulSignInsert q le Ο Οs =
if le Ο Ο then koszulSignInsert q le Ο Οs
else if q Ο = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leinstβ:Std.Total leΟ:πΟs:List πh1:le Ο Οβ’ koszulSignInsert q le Ο Οs =
if le Ο Ο then koszulSignInsert q le Ο Οs
else if q Ο = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
simp [h1] All goals completed! π
lemma koszulSignInsert_eq_grade (Ο : π) (Οs : List π) :
koszulSignInsert q le Ο Οs = if ofList q [Ο] = fermionic β§
ofList q (List.filter (fun i => decide (Β¬ le Ο i)) Οs) = fermionic then -1 else 1 := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1
induction Οs with
| nil => nil π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πβ’ koszulSignInsert q le Ο [] =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) []) = fermionic then -1 else 1
simp [koszulSignInsert] All goals completed! π
| cons Ο1 Οs ih => cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1β’ koszulSignInsert q le Ο (Ο1 :: Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1
rw [koszulSignInsert_eq_filter cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1 cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1] cons π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1
by_cases hr1 : Β¬ le Ο Ο1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1 rw [List.filter_cons_of_pos pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (decide Β¬le Ο Ο1) = true pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (decide Β¬le Ο Ο1) = true]pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (decide Β¬le Ο Ο1) = true
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ koszulSignInsert q le Ο (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1 dsimp only [koszulSignInsert, Fin.isValue, decide_not] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if le Ο Ο1 then koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else
if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1
rw [if_neg hr1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1]pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (Ο1 :: List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1
dsimp only [Fin.isValue, ofList, ite_eq_right_iff, zero_ne_one, imp_false, decide_not] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs)) =
if
(if q Ο = bosonic then bosonic else fermionic) = fermionic β§
(if q Ο1 = ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) then bosonic else fermionic) = fermionic then
-1
else 1
simp only [decide_not, ite_eq_right_iff, reduceCtorEq, imp_false] pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1
have ha (a b c : FieldStatistic) : (if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§
c = fermionic then -1 else (1 : β)
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1 := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1
fin_cases a Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1b:FieldStatisticc:FieldStatisticβ’ (if bosonic = fermionic β§ b = fermionic then -if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1
else if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬bosonic = bosonic β§ Β¬b = c then -1 else 1Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1b:FieldStatisticc:FieldStatisticβ’ (if fermionic = fermionic β§ b = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬b = c then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1 <;> Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1b:FieldStatisticc:FieldStatisticβ’ (if bosonic = fermionic β§ b = fermionic then -if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1
else if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬bosonic = bosonic β§ Β¬b = c then -1 else 1Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1b:FieldStatisticc:FieldStatisticβ’ (if fermionic = fermionic β§ b = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬b = c then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1 fin_cases b Β«1Β».Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if fermionic = fermionic β§ bosonic = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬bosonic = c then -1 else 1Β«1Β».Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if fermionic = fermionic β§ fermionic = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬fermionic = c then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1 <;> Β«0Β».Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if bosonic = fermionic β§ bosonic = fermionic then -if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1
else if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬bosonic = bosonic β§ Β¬bosonic = c then -1 else 1Β«0Β».Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if bosonic = fermionic β§ fermionic = fermionic then -if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1
else if Β¬bosonic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬bosonic = bosonic β§ Β¬fermionic = c then -1 else 1Β«1Β».Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if fermionic = fermionic β§ bosonic = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬bosonic = c then -1 else 1Β«1Β».Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1c:FieldStatisticβ’ (if fermionic = fermionic β§ fermionic = fermionic then -if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ c = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬fermionic = c then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1 fin_cases c Β«1Β».Β«1Β».Β«0Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if fermionic = fermionic β§ fermionic = fermionic then -if Β¬fermionic = bosonic β§ bosonic = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ bosonic = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬fermionic = bosonic then -1 else 1Β«1Β».Β«1Β».Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if fermionic = fermionic β§ fermionic = fermionic then -if Β¬fermionic = bosonic β§ fermionic = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ fermionic = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬fermionic = fermionic then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1
any_goals rfl Β«1Β».Β«1Β».Β«1Β» π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (if fermionic = fermionic β§ fermionic = fermionic then -if Β¬fermionic = bosonic β§ fermionic = fermionic then -1 else 1
else if Β¬fermionic = bosonic β§ fermionic = fermionic then -1 else 1) =
if Β¬fermionic = bosonic β§ Β¬fermionic = fermionic then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1
simppos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if Β¬q Ο = bosonic β§ Β¬q Ο1 = ofList q (List.filter (fun i => !decide (le Ο i)) Οs) then -1 else 1
rw [β ha (q Ο) (q Ο1) (ofList q (List.filter (fun a => !decide (le Ο a)) Οs)) pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then
-if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
else if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1 pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then
-if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
else if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1]pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ (if q Ο = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)
else koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs)) =
if q Ο = fermionic β§ q Ο1 = fermionic then
-if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
else if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
congr pos.e_t π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1pos.e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
Β· pos.e_t π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1 rw [koszulSignInsert_eq_filter pos.e_t π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1 pos.e_t π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1] at ihpos.e_t π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
simpa [ofList] using ih All goals completed! π
Β· pos.e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1 rw [koszulSignInsert_eq_filter pos.e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1 pos.e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1] at ihpos.e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1ha:β (a b c : FieldStatistic),
(if a = fermionic β§ b = fermionic then -if Β¬a = bosonic β§ c = fermionic then -1 else 1
else if Β¬a = bosonic β§ c = fermionic then -1 else 1) =
if Β¬a = bosonic β§ Β¬b = c then -1 else 1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if Β¬q Ο = bosonic β§ ofList q (List.filter (fun a => !decide (le Ο a)) Οs) = fermionic then -1 else 1
simpa [ofList] using ih All goals completed! π
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:Β¬le Ο Ο1β’ (decide Β¬le Ο Ο1) = true simp [hr1] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) (Ο1 :: Οs)) = fermionic then -1 else 1 rw [List.filter_cons_of_neg neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ Β¬(decide Β¬le Ο Ο1) = true neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ Β¬(decide Β¬le Ο Ο1) = true]neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ Β¬(decide Β¬le Ο Ο1) = true
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1 simp only [decide_not] neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic then -1 else 1
rw [koszulSignInsert_eq_filter neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic then -1 else 1 neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic then -1 else 1] at ihneg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ koszulSignInsert q le Ο (List.filter (fun i => !decide (le Ο i)) Οs) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic then -1 else 1
simpa [ofList] using ih All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ:πΟ1:πΟs:List πih:koszulSignInsert q le Ο Οs =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1hr1:¬¬le Ο Ο1β’ Β¬(decide Β¬le Ο Ο1) = true simpa using hr1 All goals completed! π
lemma koszulSignInsert_eq_perm (Οs Οs' : List π) (Ο : π) (h : Οs.Perm Οs') :
koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο Οs' := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο Οs'
rw [koszulSignInsert_eq_grade, π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1) =
koszulSignInsert q le Ο Οs' π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs') = fermionic then -1 else 1 koszulSignInsert_eq_grade π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs') = fermionic then -1 else 1 π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs') = fermionic then -1 else 1] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic then -1 else 1) =
if ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs') = fermionic then -1 else 1
congr 1 e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ (ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs) = fermionic) =
(ofList q [Ο] = fermionic β§ ofList q (List.filter (fun i => decide Β¬le Ο i) Οs') = fermionic)
simp only [decide_not, eq_iff_iff, and_congr_right_iff] e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ ofList q [Ο] = fermionic β
(ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic)
intro h' e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionicβ’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic
have hg : ofList q (List.filter (fun i => !decide (le Ο i)) Οs) =
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'β’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο Οs' e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionichg:ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = ofList q (List.filter (fun i => !decide (le Ο i)) Οs')β’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic
apply ofList_perm π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionicβ’ (List.filter (fun i => !decide (le Ο i)) Οs).Perm (List.filter (fun i => !decide (le Ο i)) Οs')e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionichg:ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = ofList q (List.filter (fun i => !decide (le Ο i)) Οs')β’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic
exact List.Perm.filter (fun i => !decide (le Ο i)) he_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionichg:ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = ofList q (List.filter (fun i => !decide (le Ο i)) Οs')β’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionice_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionichg:ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = ofList q (List.filter (fun i => !decide (le Ο i)) Οs')β’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic
rw [hg e_c π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟs':List πΟ:πh:Οs.Perm Οs'h':ofList q [Ο] = fermionichg:ofList q (List.filter (fun i => !decide (le Ο i)) Οs) = ofList q (List.filter (fun i => !decide (le Ο i)) Οs')β’ ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic β
ofList q (List.filter (fun i => !decide (le Ο i)) Οs') = fermionic All goals completed! π] All goals completed! πlemma koszulSignInsert_eq_sort (Οs : List π) (Ο : π) :
koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (List.insertionSort le Οs) := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟ:πβ’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο (List.insertionSort le Οs)
apply koszulSignInsert_eq_perm π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟs:List πΟ:πβ’ Οs.Perm (List.insertionSort le Οs)
exact List.Perm.symm (List.perm_insertionSort le Οs) All goals completed! π
lemma koszulSignInsert_eq_exchangeSign_take [Std.Total le] [IsTrans π le] (Ο : π) (Οs : List π) :
koszulSignInsert q le Ο Οs = π’(q Ο, ofList q
((List.insertionSort le Οs).take (orderedInsertPos le (List.insertionSort le Οs) Ο))) := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
rw [koszulSignInsert_eq_cons, π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο (Ο :: Οs) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) koszulSignInsert_eq_sort, π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο (List.insertionSort le (Ο :: Οs)) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) koszulSignInsert_eq_filter, π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο (List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs))) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
koszulSignInsert_eq_grade π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
have hx : (exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο))
(List.insertionSort le Οs))) = if FieldStatistic.ofList q [Ο] = fermionic β§
FieldStatistic.ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο))
(List.insertionSort le Οs)) = fermionic then - 1 else 1 := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
rw [exchangeSign_eq_if π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
q Ο = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
q Ο = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ (if
q Ο = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
simp π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)))
rw [hx π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ (if
ofList q [Ο] = fermionic β§
ofList q
(List.filter (fun i => decide Β¬le Ο i)
(List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)))) =
fermionic then
-1
else 1) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1
congr e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs))) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
simp only [List.filter_filter, Bool.and_self] e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.insertionSort le (Ο :: Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
rw [List.insertionSort_cons e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.orderedInsert le Ο (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.orderedInsert le Ο (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)]e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.orderedInsert le Ο (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
nth_rewrite 1 [List.orderedInsert_eq_take_drop] e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i)
(List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
rw [List.filter_append e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)]e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
have h1 : List.filter (fun a => decide Β¬le Ο a)
(List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))
= (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πβ’ koszulSignInsert q le Ο Οs =
(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
induction Οs with
| nil => nil π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le []) Ο)) (List.insertionSort le []))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le []) Ο)) (List.insertionSort le [])) =
fermionic then
-1
else 1β’ List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le [])) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le [])e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs) simp All goals completed! πe_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
| cons r1 r ih => cons π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πr1:πr:List πih:((exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r)) =
fermionic then
-1
else 1) β
List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)hx:(exchangeSign (q Ο))
(ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r)))) =
if
ofList q [Ο] = fermionic β§
ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r))) =
fermionic then
-1
else 1β’ List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le (r1 :: r))) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le (r1 :: r))e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
simp only [decide_not, List.insertionSort, List.filter_eq_self, Bool.not_eq_eq_eq_not,
Bool.not_true, decide_eq_false_iff_not] cons π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πr1:πr:List πih:((exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r)) =
fermionic then
-1
else 1) β
List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)hx:(exchangeSign (q Ο))
(ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r)))) =
if
ofList q [Ο] = fermionic β§
ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r))) =
fermionic then
-1
else 1β’ β a β List.takeWhile (fun a => !decide (le Ο a)) (List.foldr (List.orderedInsert le) [] (r1 :: r)), Β¬le Ο ae_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
intro a ha cons π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πr1:πr:List πih:((exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r)) =
fermionic then
-1
else 1) β
List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)hx:(exchangeSign (q Ο))
(ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r)))) =
if
ofList q [Ο] = fermionic β§
ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r))) =
fermionic then
-1
else 1a:πha:a β List.takeWhile (fun a => !decide (le Ο a)) (List.foldr (List.orderedInsert le) [] (r1 :: r))β’ Β¬le Ο ae_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
have ha' := List.mem_takeWhile_imp ha cons π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πr1:πr:List πih:((exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le r) Ο)) (List.insertionSort le r)) =
fermionic then
-1
else 1) β
List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le r)hx:(exchangeSign (q Ο))
(ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r)))) =
if
ofList q [Ο] = fermionic β§
ofList q
(List.take (β(orderedInsertPos le (List.insertionSort le (r1 :: r)) Ο)) (List.insertionSort le (r1 :: r))) =
fermionic then
-1
else 1a:πha:a β List.takeWhile (fun a => !decide (le Ο a)) (List.foldr (List.orderedInsert le) [] (r1 :: r))ha':(!decide (le Ο a)) = trueβ’ Β¬le Ο ae_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
simp_alle_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.filter (fun i => decide Β¬le Ο i) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
rw [h1 e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)]e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
List.filter (fun i => decide Β¬le Ο i) (Ο :: List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
rw [List.filter_cons e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
if (decide Β¬le Ο Ο) = true then
Ο :: List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))
else List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
if (decide Β¬le Ο Ο) = true then
Ο :: List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))
else List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)]e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) ++
if (decide Β¬le Ο Ο) = true then
Ο :: List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))
else List.filter (fun i => decide Β¬le Ο i) (List.dropWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs))) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
simp only [decide_not, (Std.Total.to_refl le).refl Ο, not_true_eq_false, decide_false,
Bool.false_eq_true, βreduceIte] e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs) ++
List.filter (fun b => !decide (le Ο b)) (List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) =
List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)
rw [orderedInsertPos_take e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs) ++
List.filter (fun b => !decide (le Ο b)) (List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs) e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs) ++
List.filter (fun b => !decide (le Ο b)) (List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)]e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs) ++
List.filter (fun b => !decide (le Ο b)) (List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)
simp only [decide_not, List.append_right_eq_self, List.filter_eq_nil_iff, Bool.not_eq_eq_eq_not,
Bool.not_true, decide_eq_false_iff_not, Decidable.not_not] e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)β’ β a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs), le Ο a
intro a ha e_c.e_b.e_a.e_Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ le Ο a
refine List.Pairwise.rel_of_mem_take_of_mem_drop
(i := (orderedInsertPos le (List.insertionSort le Οs) Ο).1 + 1)
(List.pairwise_insertionSort le (Ο :: Οs)) ?_ ?_ e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1) (List.insertionSort le (Ο :: Οs))e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β List.drop (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1) (List.insertionSort le (Ο :: Οs))
Β· e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1) (List.insertionSort le (Ο :: Οs)) simp only [List.insertionSort, List.foldr_cons, List.orderedInsert_eq_take_drop, decide_not] e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.take (β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs) ++
Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))
rw [List.take_append e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.take (β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)) e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.take (β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))]e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.take (β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))
rw [List.take_of_length_le e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length β€
β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length β€
β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1]e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs))e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length β€
β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1
Β· e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ Ο β
List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs) ++
List.take
(β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)) simp [orderedInsertPos] All goals completed! π
Β· e_c.e_b.e_a.e_Οs.refine_1 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.foldr (List.orderedInsert le) [] Οs)).length β€
β(orderedInsertPos le (List.foldr (List.orderedInsert le) [] Οs) Ο) + 1 simp [orderedInsertPos] All goals completed! π
Β· e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β List.drop (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1) (List.insertionSort le (Ο :: Οs)) simp only [List.insertionSort_cons, List.orderedInsert_eq_take_drop, decide_not] e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
List.drop (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs) ++
Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs))
rw [List.drop_append, e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
List.drop (β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1)
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
[] ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs))e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length β€
β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 List.drop_of_length_le e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
[] ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs))e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length β€
β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
[] ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs))e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length β€
β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1]e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
[] ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs))e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length β€
β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1
Β· e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ a β
[] ++
List.drop
(β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 -
(List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length)
(Ο :: List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)) simpa [orderedInsertPos] using ha All goals completed! π
Β· e_c.e_b.e_a.e_Οs.refine_2 π:Typeq:π β FieldStatisticle:π β π β PropinstβΒ²:DecidableRel leinstβΒΉ:Std.Total leinstβ:IsTrans π leΟ:πΟs:List πhx:(exchangeSign (q Ο))
(ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs))) =
if
ofList q [Ο] = fermionic β§
ofList q (List.take (β(orderedInsertPos le (List.insertionSort le Οs) Ο)) (List.insertionSort le Οs)) =
fermionic then
-1
else 1h1:List.filter (fun a => decide Β¬le Ο a) (List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)) =
List.takeWhile (fun b => decide Β¬le Ο b) (List.insertionSort le Οs)a:πha:a β List.dropWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)β’ (List.takeWhile (fun b => !decide (le Ο b)) (List.insertionSort le Οs)).length β€
β(orderedInsertPos le (List.insertionSort le Οs) Ο) + 1 simp [orderedInsertPos] All goals completed! πlemma koszulSignInsert_insertIdx (i j : π) (r : List π) (n : β) (hn : n β€ r.length) :
koszulSignInsert q le j (List.insertIdx r n i) = koszulSignInsert q le j (i :: r) := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel lei:πj:πr:List πn:βhn:n β€ r.lengthβ’ koszulSignInsert q le j (r.insertIdx n i) = koszulSignInsert q le j (i :: r)
apply koszulSignInsert_eq_perm π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel lei:πj:πr:List πn:βhn:n β€ r.lengthβ’ (r.insertIdx n i).Perm (i :: r)
exact List.perm_insertIdx i r hn All goals completed! π
The difference in koszulSignInsert on inserting r0 into r compared to
into r1 :: r for any r.
def koszulSignCons (Ο0 Ο1 : π) : β :=
if le Ο0 Ο1 then 1 else
if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1lemma koszulSignCons_eq_exchangeSign (Ο0 Ο1 : π) : koszulSignCons q le Ο0 Ο1 =
if le Ο0 Ο1 then 1 else π’(q Ο0, q Ο1) := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πβ’ koszulSignCons q le Ο0 Ο1 = if le Ο0 Ο1 then 1 else (exchangeSign (q Ο0)) (q Ο1)
simp only [koszulSignCons] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πβ’ (if le Ο0 Ο1 then 1 else if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) =
if le Ο0 Ο1 then 1 else (exchangeSign (q Ο0)) (q Ο1)
congr 1 e_e π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
by_cases h0 : q Ο0 = fermionic pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:Β¬q Ο0 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) by_cases h1 : q Ο1 = fermionic pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionich1:q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionich1:Β¬q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionich1:q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) simp [h0, h1, exchangeSign] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionich1:Β¬q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) have h1 : q Ο1 = bosonic := (neq_fermionic_iff_eq_bosonic (q Ο1)).mp h1 neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:q Ο0 = fermionich1β:Β¬q Ο1 = fermionich1:q Ο1 = bosonicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
simp [h0, h1] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0:Β¬q Ο0 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) have h0 : q Ο0 = bosonic := (neq_fermionic_iff_eq_bosonic (q Ο0)).mp h0 neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
by_cases h1 : q Ο1 = fermionic pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonich1:q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonich1:Β¬q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
Β· pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonich1:q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) simp [h0, h1] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonich1:Β¬q Ο1 = fermionicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1) have h1 : q Ο1 = bosonic := (neq_fermionic_iff_eq_bosonic (q Ο1)).mp h1 neg π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πh0β:Β¬q Ο0 = fermionich0:q Ο0 = bosonich1β:Β¬q Ο1 = fermionich1:q Ο1 = bosonicβ’ (if q Ο0 = fermionic β§ q Ο1 = fermionic then -1 else 1) = (exchangeSign (q Ο0)) (q Ο1)
simp [h0, h1] All goals completed! πlemma koszulSignInsert_cons (r0 r1 : π) (r : List π) :
koszulSignInsert q le r0 (r1 :: r) = (koszulSignCons q le r0 r1) *
koszulSignInsert q le r0 r := by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel ler0:πr1:πr:List πβ’ koszulSignInsert q le r0 (r1 :: r) = koszulSignCons q le r0 r1 * koszulSignInsert q le r0 r
simp [koszulSignInsert, koszulSignCons] All goals completed! π
lemma koszulSignInsert_of_le_mem (Ο0 : π) : (Οs : List π) β (h : β b β Οs, le Ο0 b) β
koszulSignInsert q le Ο0 Οs = 1
| [], _ => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πxβ:β b β [], le Ο0 bβ’ koszulSignInsert q le Ο0 [] = 1 by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πxβ:β b β [], le Ο0 bβ’ koszulSignInsert q le Ο0 [] = 1
simp [koszulSignInsert] All goals completed! π
| Ο1 :: Οs, h => π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 (Ο1 :: Οs) = 1 by π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 (Ο1 :: Οs) = 1
simp only [koszulSignInsert] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ (if le Ο0 Ο1 then koszulSignInsert q le Ο0 Οs
else if q Ο0 = fermionic β§ q Ο1 = fermionic then -koszulSignInsert q le Ο0 Οs else koszulSignInsert q le Ο0 Οs) =
1
rw [if_pos π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 Οs = 1hc π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ le Ο0 Ο1 π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 Οs = 1hc π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ le Ο0 Ο1] π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 Οs = 1hc π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ le Ο0 Ο1
Β· π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ koszulSignInsert q le Ο0 Οs = 1 apply koszulSignInsert_of_le_mem π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ β b β Οs, le Ο0 b
Β· π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ β b β Οs, le Ο0 b intro b hb π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bb:πhb:b β Οsβ’ le Ο0 b
exact h b (List.mem_cons_of_mem _ hb) All goals completed! π
Β· hc π:Typeq:π β FieldStatisticle:π β π β Propinstβ:DecidableRel leΟ0:πΟ1:πΟs:List πh:β b β Ο1 :: Οs, le Ο0 bβ’ le Ο0 Ο1 exact h Ο1 List.mem_cons_self All goals completed! π
lemma koszulSignInsert_eq_rel_eq_stat {Ο Ο : π} [IsTrans π le]
(h1 : le Ο Ο) (h2 : le Ο Ο) (hq : q Ο = q Ο) : (Οs : List π) β
koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο Οs
| [] => π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q Οβ’ koszulSignInsert q le Ο [] = koszulSignInsert q le Ο [] by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q Οβ’ koszulSignInsert q le Ο [] = koszulSignInsert q le Ο []
simp [koszulSignInsert] All goals completed! π
| Ο' :: Οs => π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) = koszulSignInsert q le Ο (Ο' :: Οs) by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) = koszulSignInsert q le Ο (Ο' :: Οs)
simp only [koszulSignInsert] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
simp_all only π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
by_cases hr : le Ο Ο' pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οsneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
Β· pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs simp only [hr, βreduceIte] pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'β’ koszulSignInsert q le Ο Οs =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
have h1' : le Ο Ο' := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) = koszulSignInsert q le Ο (Ο' :: Οs) pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'h1':le Ο Ο'β’ koszulSignInsert q le Ο Οs =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
apply IsTrans.trans Ο Ο Ο' h2 hr pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'h1':le Ο Ο'β’ koszulSignInsert q le Ο Οs =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οspos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'h1':le Ο Ο'β’ koszulSignInsert q le Ο Οs =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
simp only [h1', βreduceIte] pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:le Ο Ο'h1':le Ο Ο'β’ koszulSignInsert q le Ο Οs = koszulSignInsert q le Ο Οs
exact koszulSignInsert_eq_rel_eq_stat h1 h2 hq Οs All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs have hΟΟ' : Β¬ le Ο Ο' := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πβ’ koszulSignInsert q le Ο (Ο' :: Οs) = koszulSignInsert q le Ο (Ο' :: Οs) neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
intro hΟΟ' π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':le Ο Ο'β’ Falseneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
apply hr π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':le Ο Ο'β’ le Ο Ο'neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
apply IsTrans.trans Ο Ο Ο' h1 hΟΟ'neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οsneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if le Ο Ο' then koszulSignInsert q le Ο Οs
else if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
simp only [hr, βreduceIte, hΟΟ'] neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs
rw [koszulSignInsert_eq_rel_eq_stat h1 h2 hq Οs neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟ':πΟs:List πhr:Β¬le Ο Ο'hΟΟ':Β¬le Ο Ο'β’ (if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs) =
if q Ο = fermionic β§ q Ο' = fermionic then -koszulSignInsert q le Ο Οs else koszulSignInsert q le Ο Οs All goals completed! π] All goals completed! π
lemma koszulSignInsert_eq_remove_same_stat_append {Ο Ο Ο' : π} [IsTrans π le]
(h1 : le Ο Ο) (h2 : le Ο Ο) (hq : q Ο = q Ο) : (Οs : List π) β
koszulSignInsert q le Ο' (Ο :: Ο :: Οs) = koszulSignInsert q le Ο' Οs := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q Οβ’ β (Οs : List π), koszulSignInsert q le Ο' (Ο :: Ο :: Οs) = koszulSignInsert q le Ο' Οs
intro Οs π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πβ’ koszulSignInsert q le Ο' (Ο :: Ο :: Οs) = koszulSignInsert q le Ο' Οs
simp_all only [koszulSignInsert, and_self, ite_true, ite_false, ite_self] π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
by_cases hΟ'Ο : le Ο' Ο pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οsneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
Β· pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs have hΟ'Ο : le Ο' Ο := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q Οβ’ β (Οs : List π), koszulSignInsert q le Ο' (Ο :: Ο :: Οs) = koszulSignInsert q le Ο' Οs pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:le Ο' ΟhΟ'Ο:le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
apply IsTrans.trans Ο' Ο Ο hΟ'Ο h1 pos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:le Ο' ΟhΟ'Ο:le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οspos π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:le Ο' ΟhΟ'Ο:le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
simp [hΟ'Ο, hΟ'Ο] All goals completed! π
Β· neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs have hΟ'Ο : Β¬ le Ο' Ο := by π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q Οβ’ β (Οs : List π), koszulSignInsert q le Ο' (Ο :: Ο :: Οs) = koszulSignInsert q le Ο' Οs neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
intro hΟ'Ο π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:le Ο' Οβ’ Falseneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
apply hΟ'Ο π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:le Ο' Οβ’ le Ο' Οneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
apply IsTrans.trans Ο' Ο Ο hΟ'Ο h2neg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οsneg π:Typeq:π β FieldStatisticle:π β π β PropinstβΒΉ:DecidableRel leΟ:πΟ:πΟ':πinstβ:IsTrans π leh1:le Ο Οh2:le Ο Οhq:q Ο = q ΟΟs:List πhΟ'Ο:Β¬le Ο' ΟhΟ'Ο:Β¬le Ο' Οβ’ (if le Ο' Ο then
if le Ο' Ο then koszulSignInsert q le Ο' Οs
else if q Ο' = fermionic β§ q Ο = fermionic then -koszulSignInsert q le Ο' Οs else koszulSignInsert q le Ο' Οs
else
if q Ο' = fermionic β§ q Ο = fermionic then
-if le Ο' Ο then koszulSignInsert q le Ο' Οs else -koszulSignInsert q le Ο' Οs
else koszulSignInsert q le Ο' Οs) =
koszulSignInsert q le Ο' Οs
simp_all All goals completed! π