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.Basic public import Mathlib.Analysis.Complex.Basic

Exchange sign for field statistics

Suppose we have two fields φ and ψ, and the term φψ, if we swap them ψφ, we may pick up a sign. This sign is called the exchange sign. This sign is -1 if both fields ψ and φ are fermionic and 1 otherwise.

In this module we define the exchange sign for general field statistics, and prove some properties of it. Importantly:

    It is symmetric exchangeSign_symm.

    When multiplied with itself it is 1 exchangeSign_mul_self.

    It is a cocycle exchangeSign_cocycle.

@[expose] public section

The exchange sign, exchangeSign, is defined as the group homomorphism

FieldStatistic →* FieldStatistic →* ℂ,

for which exchangeSign a b is -1 if both a and b are fermionic and 1 otherwise. The exchange sign is the sign one picks up on exchanging an operator or field φ₁ of statistic a with an operator or field φ₂ of statistic b, i.e. φ₁φ₂ → φ₂φ₁.

The notation 𝓢(a, b) is used for the exchange sign of a and b.

def exchangeSign : FieldStatistic →* FieldStatistic →* where toFun a := { toFun := fun b => match a, b with | bosonic, _ => 1 | _, bosonic => 1 | fermionic, fermionic => -1 map_one' := 𝓕:Typea:FieldStatistic(match a, 1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = 1 𝓕:Type(match bosonic, 1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = 1𝓕:Type(match fermionic, 1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = 1 𝓕:Type(match bosonic, 1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = 1𝓕:Type(match fermionic, 1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = 1 All goals completed! 🐙 map_mul' := fun c b => 𝓕:Typea:FieldStatisticc:FieldStatisticb:FieldStatistic(match a, c * b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match a, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match a, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Typec:FieldStatisticb:FieldStatistic(match bosonic, c * b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatisticb:FieldStatistic(match fermionic, c * b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Typec:FieldStatisticb:FieldStatistic(match bosonic, c * b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatisticb:FieldStatistic(match fermionic, c * b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Typec:FieldStatistic(match fermionic, c * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatistic(match fermionic, c * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Typec:FieldStatistic(match bosonic, c * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatistic(match bosonic, c * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatistic(match fermionic, c * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Typec:FieldStatistic(match fermionic, c * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, c with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Type(match fermionic, bosonic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match fermionic, fermionic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 𝓕:Type(match bosonic, bosonic * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match bosonic, fermionic * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match bosonic, bosonic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match bosonic, fermionic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match bosonic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match bosonic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match fermionic, bosonic * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match fermionic, fermionic * bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match fermionic, bosonic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, bosonic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1𝓕:Type(match fermionic, fermionic * fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) = (match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1) * match fermionic, fermionic with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1 All goals completed! 🐙 } map_one' := 𝓕:Type{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } = 1 𝓕:Typeb:FieldStatistic{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } b = 1 b 𝓕:Type{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = 1 bosonic𝓕:Type{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = 1 fermionic 𝓕:Type{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = 1 bosonic𝓕:Type{ toFun := fun b => match 1, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = 1 fermionic All goals completed! 🐙 map_mul' c b := 𝓕:Typec:FieldStatisticb:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } = { toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } 𝓕:Typec:FieldStatisticb:FieldStatistica:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } a = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) a 𝓕:Typec:FieldStatisticb:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Typec:FieldStatisticb:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic 𝓕:Typec:FieldStatisticb:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Typec:FieldStatisticb:FieldStatistic{ toFun := fun b_1 => match c * b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b_1 => match b, b_1 with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic 𝓕:Typec:FieldStatistic{ toFun := fun b => match c * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Typec:FieldStatistic{ toFun := fun b => match c * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic 𝓕:Typec:FieldStatistic{ toFun := fun b => match c * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Typec:FieldStatistic{ toFun := fun b => match c * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Typec:FieldStatistic{ toFun := fun b => match c * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Typec:FieldStatistic{ toFun := fun b => match c * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match c, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic 𝓕:Type{ toFun := fun b => match bosonic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Type{ toFun := fun b => match fermionic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic 𝓕:Type{ toFun := fun b => match bosonic * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Type{ toFun := fun b => match fermionic * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Type{ toFun := fun b => match bosonic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Type{ toFun := fun b => match fermionic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } bosonic = ({ toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) bosonic𝓕:Type{ toFun := fun b => match bosonic * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Type{ toFun := fun b => match fermionic * bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Type{ toFun := fun b => match bosonic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match bosonic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic𝓕:Type{ toFun := fun b => match fermionic * fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } fermionic = ({ toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := } * { toFun := fun b => match fermionic, b with | bosonic, x => 1 | x, bosonic => 1 | fermionic, fermionic => -1, map_one' := , map_mul' := }) fermionic All goals completed! 🐙
@[inherit_doc exchangeSign] scoped[FieldStatistic] notation "𝓢(" a "," b ")" => exchangeSign a b

The exchange sign is symmetric.

@[simp] lemma exchangeSign_bosonic (a : FieldStatistic) : 𝓢(a, bosonic) = 1 := a:FieldStatistic(exchangeSign a) bosonic = 1 (exchangeSign bosonic) bosonic = 1(exchangeSign fermionic) bosonic = 1 (exchangeSign bosonic) bosonic = 1(exchangeSign fermionic) bosonic = 1 All goals completed! 🐙All goals completed! 🐙@[simp] lemma fermionic_exchangeSign_fermionic : 𝓢(fermionic, fermionic) = - 1 := (exchangeSign fermionic) fermionic = -1 All goals completed! 🐙lemma exchangeSign_eq_if (a b : FieldStatistic) : 𝓢(a, b) = if a = fermionic b = fermionic then - 1 else 1 := a:FieldStatisticb:FieldStatistic(exchangeSign a) b = if a = fermionic b = fermionic then -1 else 1 b:FieldStatistic(exchangeSign bosonic) b = if bosonic = fermionic b = fermionic then -1 else 1b:FieldStatistic(exchangeSign fermionic) b = if fermionic = fermionic b = fermionic then -1 else 1 b:FieldStatistic(exchangeSign bosonic) b = if bosonic = fermionic b = fermionic then -1 else 1b:FieldStatistic(exchangeSign fermionic) b = if fermionic = fermionic b = fermionic then -1 else 1 (exchangeSign fermionic) bosonic = if fermionic = fermionic bosonic = fermionic then -1 else 1(exchangeSign fermionic) fermionic = if fermionic = fermionic fermionic = fermionic then -1 else 1 (exchangeSign bosonic) bosonic = if bosonic = fermionic bosonic = fermionic then -1 else 1(exchangeSign bosonic) fermionic = if bosonic = fermionic fermionic = fermionic then -1 else 1(exchangeSign fermionic) bosonic = if fermionic = fermionic bosonic = fermionic then -1 else 1(exchangeSign fermionic) fermionic = if fermionic = fermionic fermionic = fermionic then -1 else 1 All goals completed! 🐙@[simp] lemma exchangeSign_mul_self (a b : FieldStatistic) : 𝓢(a, b) * 𝓢(a, b) = 1 := a:FieldStatisticb:FieldStatistic(exchangeSign a) b * (exchangeSign a) b = 1 b:FieldStatistic(exchangeSign bosonic) b * (exchangeSign bosonic) b = 1b:FieldStatistic(exchangeSign fermionic) b * (exchangeSign fermionic) b = 1 b:FieldStatistic(exchangeSign bosonic) b * (exchangeSign bosonic) b = 1b:FieldStatistic(exchangeSign fermionic) b * (exchangeSign fermionic) b = 1 (exchangeSign fermionic) bosonic * (exchangeSign fermionic) bosonic = 1(exchangeSign fermionic) fermionic * (exchangeSign fermionic) fermionic = 1 (exchangeSign bosonic) bosonic * (exchangeSign bosonic) bosonic = 1(exchangeSign bosonic) fermionic * (exchangeSign bosonic) fermionic = 1(exchangeSign fermionic) bosonic * (exchangeSign fermionic) bosonic = 1(exchangeSign fermionic) fermionic * (exchangeSign fermionic) fermionic = 1 All goals completed! 🐙@[simp] lemma exchangeSign_mul_self_swap (a b : FieldStatistic) : 𝓢(a, b) * 𝓢(b, a) = 1 := a:FieldStatisticb:FieldStatistic(exchangeSign a) b * (exchangeSign b) a = 1 b:FieldStatistic(exchangeSign bosonic) b * (exchangeSign b) bosonic = 1b:FieldStatistic(exchangeSign fermionic) b * (exchangeSign b) fermionic = 1 b:FieldStatistic(exchangeSign bosonic) b * (exchangeSign b) bosonic = 1b:FieldStatistic(exchangeSign fermionic) b * (exchangeSign b) fermionic = 1 (exchangeSign fermionic) bosonic * (exchangeSign bosonic) fermionic = 1(exchangeSign fermionic) fermionic * (exchangeSign fermionic) fermionic = 1 (exchangeSign bosonic) bosonic * (exchangeSign bosonic) bosonic = 1(exchangeSign bosonic) fermionic * (exchangeSign fermionic) bosonic = 1(exchangeSign fermionic) bosonic * (exchangeSign bosonic) fermionic = 1(exchangeSign fermionic) fermionic * (exchangeSign fermionic) fermionic = 1 All goals completed! 🐙All goals completed! 🐙

The exchange sign is a cocycle.

lemma exchangeSign_cocycle (a b c : FieldStatistic) : 𝓢(a, b * c) * 𝓢(b, c) = 𝓢(a, b) * 𝓢(a * b, c) := a:FieldStatisticb:FieldStatisticc:FieldStatistic(exchangeSign a) (b * c) * (exchangeSign b) c = (exchangeSign a) b * (exchangeSign (a * b)) c b:FieldStatisticc:FieldStatistic(exchangeSign bosonic) (b * c) * (exchangeSign b) c = (exchangeSign bosonic) b * (exchangeSign (bosonic * b)) cb:FieldStatisticc:FieldStatistic(exchangeSign fermionic) (b * c) * (exchangeSign b) c = (exchangeSign fermionic) b * (exchangeSign (fermionic * b)) c b:FieldStatisticc:FieldStatistic(exchangeSign bosonic) (b * c) * (exchangeSign b) c = (exchangeSign bosonic) b * (exchangeSign (bosonic * b)) cb:FieldStatisticc:FieldStatistic(exchangeSign fermionic) (b * c) * (exchangeSign b) c = (exchangeSign fermionic) b * (exchangeSign (fermionic * b)) c c:FieldStatistic(exchangeSign fermionic) (bosonic * c) * (exchangeSign bosonic) c = (exchangeSign fermionic) bosonic * (exchangeSign (fermionic * bosonic)) cc:FieldStatistic(exchangeSign fermionic) (fermionic * c) * (exchangeSign fermionic) c = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) c c:FieldStatistic(exchangeSign bosonic) (bosonic * c) * (exchangeSign bosonic) c = (exchangeSign bosonic) bosonic * (exchangeSign (bosonic * bosonic)) cc:FieldStatistic(exchangeSign bosonic) (fermionic * c) * (exchangeSign fermionic) c = (exchangeSign bosonic) fermionic * (exchangeSign (bosonic * fermionic)) cc:FieldStatistic(exchangeSign fermionic) (bosonic * c) * (exchangeSign bosonic) c = (exchangeSign fermionic) bosonic * (exchangeSign (fermionic * bosonic)) cc:FieldStatistic(exchangeSign fermionic) (fermionic * c) * (exchangeSign fermionic) c = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) c (exchangeSign fermionic) (fermionic * bosonic) * (exchangeSign fermionic) bosonic = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) bosonic(exchangeSign fermionic) (fermionic * fermionic) * (exchangeSign fermionic) fermionic = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) fermionic (exchangeSign bosonic) (bosonic * bosonic) * (exchangeSign bosonic) bosonic = (exchangeSign bosonic) bosonic * (exchangeSign (bosonic * bosonic)) bosonic(exchangeSign bosonic) (bosonic * fermionic) * (exchangeSign bosonic) fermionic = (exchangeSign bosonic) bosonic * (exchangeSign (bosonic * bosonic)) fermionic(exchangeSign bosonic) (fermionic * bosonic) * (exchangeSign fermionic) bosonic = (exchangeSign bosonic) fermionic * (exchangeSign (bosonic * fermionic)) bosonic(exchangeSign bosonic) (fermionic * fermionic) * (exchangeSign fermionic) fermionic = (exchangeSign bosonic) fermionic * (exchangeSign (bosonic * fermionic)) fermionic(exchangeSign fermionic) (bosonic * bosonic) * (exchangeSign bosonic) bosonic = (exchangeSign fermionic) bosonic * (exchangeSign (fermionic * bosonic)) bosonic(exchangeSign fermionic) (bosonic * fermionic) * (exchangeSign bosonic) fermionic = (exchangeSign fermionic) bosonic * (exchangeSign (fermionic * bosonic)) fermionic(exchangeSign fermionic) (fermionic * bosonic) * (exchangeSign fermionic) bosonic = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) bosonic(exchangeSign fermionic) (fermionic * fermionic) * (exchangeSign fermionic) fermionic = (exchangeSign fermionic) fermionic * (exchangeSign (fermionic * fermionic)) fermionic All goals completed! 🐙