Imports
/- Copyright (c) 2025 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.FieldSpecification.TimeOrder public import Physlib.QFT.PerturbationTheory.FieldOpFreeAlgebra.SuperCommute

Time Ordering in the FieldOpFreeAlgebra

@[expose] public section

Time order

For a field specification 𝓕, timeOrderF is the linear map

FieldOpFreeAlgebra 𝓕 →ₗ[ℂ] FieldOpFreeAlgebra 𝓕

defined by its action on the basis ofCrAnListF φs, taking ofCrAnListF φs to

crAnTimeOrderSign φs • ofCrAnListF (crAnTimeOrderList φs).

That is, timeOrderF time-orders the field operators and multiplies by the sign of the time order.

The notation 𝓣ᶠ(a) is used for timeOrderF a

def timeOrderF : FieldOpFreeAlgebra 𝓕 →ₗ[ℂ] FieldOpFreeAlgebra 𝓕 := Basis.constr ofCrAnListFBasis ℂ fun φs => crAnTimeOrderSign φs • ofCrAnListF (crAnTimeOrderList φs)
@[inherit_doc timeOrderF] scoped[FieldSpecification.FieldOpFreeAlgebra] notation "𝓣ᶠ(" a ")" => timeOrderF a𝓕:FieldSpecificationφs:List 𝓕.CrAnFieldOp⊢ timeOrderF (ofCrAnListFBasis φs) = crAnTimeOrderSign φs • ofCrAnListF (crAnTimeOrderList φs) All goals completed! 🐙All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)φs':List 𝓕.CrAnFieldOppa:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun a ha => timeOrderF (a * ofCrAnListF φs' * ofCrAnListF φs) = timeOrderF (a * timeOrderF (ofCrAnListF φs') * ofCrAnListF φs)⊢ pa 0 ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)φs':List 𝓕.CrAnFieldOppa:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun a ha => timeOrderF (a * ofCrAnListF φs' * ofCrAnListF φs) = timeOrderF (a * timeOrderF (ofCrAnListF φs') * ofCrAnListF φs)⊢ ∀ (x y : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)) (hy : y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pa x hx → pa y hy → pa (x + y) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)φs':List 𝓕.CrAnFieldOppa:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun a ha => timeOrderF (a * ofCrAnListF φs' * ofCrAnListF φs) = timeOrderF (a * timeOrderF (ofCrAnListF φs') * ofCrAnListF φs)x:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)hy:y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)h1:pa x hxh2:pa y hy⊢ pa (x + y) ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)φs':List 𝓕.CrAnFieldOppa:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun a ha => timeOrderF (a * ofCrAnListF φs' * ofCrAnListF φs) = timeOrderF (a * timeOrderF (ofCrAnListF φs') * ofCrAnListF φs)⊢ ∀ (a : ℂ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pa x hx → pa (a • x) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)φs':List 𝓕.CrAnFieldOppa:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun a ha => timeOrderF (a * ofCrAnListF φs' * ofCrAnListF φs) = timeOrderF (a * timeOrderF (ofCrAnListF φs') * ofCrAnListF φs)x:ℂhx:𝓕.FieldOpFreeAlgebrah:hx ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)⊢ pa hx h → pa (x • hx) ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)⊢ pb 0 ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)⊢ ∀ (x y : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)) (hy : y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pb x hx → pb y hy → pb (x + y) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)x:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)hy:y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)h1:pb x hxh2:pb y hy⊢ pb (x + y) ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)⊢ ∀ (a : ℂ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pb x hx → pb (a • x) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)φs:List 𝓕.CrAnFieldOppb:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun b hb => timeOrderF (a * b * ofCrAnListF φs) = timeOrderF (a * timeOrderF b * ofCrAnListF φs)x:ℂhx:𝓕.FieldOpFreeAlgebrah:hx ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)⊢ pb hx h → pb (x • hx) ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)⊢ pc 0 ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)⊢ ∀ (x y : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)) (hy : y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pc x hx → pc y hy → pc (x + y) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)x:𝓕.FieldOpFreeAlgebray:𝓕.FieldOpFreeAlgebrahx:x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)hy:y ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)h1:pc x hxh2:pc y hy⊢ pc (x + y) ⋯ All goals completed! 🐙 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)⊢ ∀ (a : ℂ) (x : 𝓕.FieldOpFreeAlgebra) (hx : x ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)), pc x hx → pc (a • x) ⋯ 𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebrac:𝓕.FieldOpFreeAlgebrapc:(c : 𝓕.FieldOpFreeAlgebra) → c ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis) → Prop := fun c hc => timeOrderF (a * b * c) = timeOrderF (a * timeOrderF b * c)x:ℂhx:𝓕.FieldOpFreeAlgebrah:hx ∈ Submodule.span ℂ (Set.range ⇑ofCrAnListFBasis)hp:pc hx h⊢ pc (x • hx) ⋯ All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebra⊢ timeOrderF (a * timeOrderF b * 1) = timeOrderF (a * timeOrderF b) All goals completed! 🐙𝓕:FieldSpecificationa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebra⊢ timeOrderF (1 * timeOrderF a * b) = timeOrderF (timeOrderF a * b) All goals completed! 🐙𝓕:FieldSpecificationφs:List 𝓕.FieldOp⊢ ∑ x, ofCrAnListF (crAnTimeOrderList ↑x) = ∑ s, ofCrAnListF ↑(crAnSectionTimeOrder φs s) All goals completed! 🐙𝓕:FieldSpecification⊢ timeOrderSign [] • ofFieldOpListF (timeOrderList []) = 1 All goals completed! 🐙@[simp] lemma timeOrderF_ofFieldOpListF_singleton (φ : 𝓕.FieldOp) : 𝓣ᶠ(ofFieldOpListF [φ]) = ofFieldOpListF [φ] := 𝓕:FieldSpecificationφ:𝓕.FieldOp⊢ timeOrderF (ofFieldOpListF [φ]) = ofFieldOpListF [φ] All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:timeOrderRel φ ψ⊢ 1 • ofFieldOpListF [φ, ψ] = ofFieldOpListF [φ, ψ] All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:¬timeOrderRel φ ψ⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛψ) • ofFieldOpListF [ψ, φ] = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛψ) • (ofFieldOpListF [ψ] * ofFieldOpListF [φ]) All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:¬timeOrderRel φ ψ⊢ (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛψ) • ofFieldOpF ψ * ofFieldOpF φ = (exchangeSign (𝓕|>ₛφ)) (𝓕|>ₛψ) • (ofFieldOpF ψ * ofFieldOpF φ)𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:¬timeOrderRel φ ψ⊢ timeOrderRel ψ φ 𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:¬timeOrderRel φ ψ⊢ timeOrderRel ψ φ 𝓕:FieldSpecificationφ:𝓕.FieldOpψ:𝓕.FieldOph:¬timeOrderRel φ ψhx:timeOrderRel ψ φ ∨ timeOrderRel φ ψ⊢ timeOrderRel ψ φ All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ ψh1:crAnTimeOrderRel φ ψ ∨ crAnTimeOrderRel ψ φ⊢ crAnTimeOrderRel ψ φ All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ ψa:𝓕.FieldOpFreeAlgebra⊢ timeOrderF (a * 0) = 0 All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ ψa:𝓕.FieldOpFreeAlgebra⊢ timeOrderF (0 * a) = 0 All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ ψa:𝓕.FieldOpFreeAlgebrab:𝓕.FieldOpFreeAlgebra⊢ timeOrderF (a * 0 * b) = 0 All goals completed! 🐙𝓕:FieldSpecificationφ1:𝓕.CrAnFieldOpφ2:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ1 φ2a:𝓕.FieldOpFreeAlgebrah':(superCommuteF (ofCrAnListF [φ1])) (ofCrAnListF [φ2]) ∈ statisticSubmodule fermionic⊢ 0 + 0 = 0 All goals completed! 🐙𝓕:FieldSpecificationφ1:𝓕.CrAnFieldOpφ2:𝓕.CrAnFieldOpφ3:𝓕.CrAnFieldOph12:¬crAnTimeOrderRel φ1 φ2h13:¬crAnTimeOrderRel φ1 φ3⊢ (exchangeSign (𝓕.crAnStatistics φ1)) (𝓕.crAnStatistics φ2) = 0 ∨ (exchangeSign (𝓕.crAnStatistics φ3)) (𝓕.crAnStatistics φ1) = 0 ∨ 0 = 0 All goals completed! 🐙𝓕:FieldSpecificationφ1:𝓕.CrAnFieldOpφ2:𝓕.CrAnFieldOpφ3:𝓕.CrAnFieldOph12:¬crAnTimeOrderRel φ2 φ1h13:¬crAnTimeOrderRel φ3 φ1⊢ (exchangeSign (𝓕.crAnStatistics φ1)) (𝓕.crAnStatistics φ2) = 0 ∨ 0 = 0 All goals completed! 🐙All goals completed! 🐙 𝓕:FieldSpecificationφ1:𝓕.CrAnFieldOpφ2:𝓕.CrAnFieldOpφ3:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ3 φ1h23:crAnTimeOrderRel φ2 φ3h32:crAnTimeOrderRel φ3 φ2h12:crAnTimeOrderRel φ1 φ2h13:crAnTimeOrderRel φ1 φ3h21:crAnTimeOrderRel φ2 φ1⊢ timeOrderF ((superCommuteF (ofCrAnOpF φ1)) ((superCommuteF (ofCrAnOpF φ2)) (ofCrAnOpF φ3))) = 0 𝓕:FieldSpecificationφ1:𝓕.CrAnFieldOpφ2:𝓕.CrAnFieldOpφ3:𝓕.CrAnFieldOph:¬crAnTimeOrderRel φ3 φ1h23:crAnTimeOrderRel φ2 φ3h32:crAnTimeOrderRel φ3 φ2h12:crAnTimeOrderRel φ1 φ2h13:crAnTimeOrderRel φ1 φ3h21:crAnTimeOrderRel φ2 φ1⊢ crAnTimeOrderRel φ3 φ1 All goals completed! 🐙𝓕:FieldSpecificationφ:𝓕.CrAnFieldOpψ:𝓕.CrAnFieldOph1:crAnTimeOrderRel φ ψh2:crAnTimeOrderRel ψ φ⊢ 1 • ofCrAnListF [φ, ψ] - (exchangeSign (𝓕.crAnStatistics φ)) (𝓕.crAnStatistics ψ) • 1 • ofCrAnListF [ψ, φ] = ofCrAnListF [φ, ψ] - (exchangeSign (𝓕.crAnStatistics φ)) (𝓕.crAnStatistics ψ) • ofCrAnListF [ψ, φ] All goals completed! 🐙

Interaction with maxTimeField

In the state algebra time, ordering obeys T(φ₀φ₁…φₙ) = s * φᵢ * T(φ₀φ₁…φᵢ₋₁φᵢ₊₁…φₙ) where φᵢ is the state which has maximum time and s is the exchange sign of φᵢ and φ₀φ₁…φᵢ₋₁.

𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ timeOrderSign (φ :: φs) = timeOrderSign (φ :: φs) * ((exchangeSign (𝓕|>ₛmaxTimeField φ φs)) (ofList 𝓕.fieldOpStatistic (List.take (maxTimeFieldPos φ φs) (φ :: φs))) * (exchangeSign (𝓕|>ₛmaxTimeField φ φs)) (ofList 𝓕.fieldOpStatistic (List.take (maxTimeFieldPos φ φs) (φ :: φs)))) All goals completed! 🐙

In the state algebra time, ordering obeys T(φ₀φ₁…φₙ) = s * φᵢ * T(φ₀φ₁…φᵢ₋₁φᵢ₊₁…φₙ) where φᵢ is the state which has maximum time and s is the exchange sign of φᵢ and φ₀φ₁…φᵢ₋₁. Here s is written using finite sets.

set_option backward.isDefEq.respectTransparency false in𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1⊢ ↑(if i < insertionSortMinPos timeOrderRel φ φs then ⟨↑i, ⋯⟩ else ⟨↑i + 1, ⋯⟩) < ↑⟨↑(insertionSortMinPos timeOrderRel φ φs), ⋯⟩ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:i < insertionSortMinPos timeOrderRel φ φs⊢ ↑⟨↑i, ⋯⟩ < ↑⟨↑(insertionSortMinPos timeOrderRel φ φs), ⋯⟩𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:¬i < insertionSortMinPos timeOrderRel φ φs⊢ ↑⟨↑i, ⋯⟩ < ↑⟨↑(insertionSortMinPos timeOrderRel φ φs), ⋯⟩ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:i < insertionSortMinPos timeOrderRel φ φs⊢ ↑⟨↑i, ⋯⟩ < ↑⟨↑(insertionSortMinPos timeOrderRel φ φs), ⋯⟩ 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:i < insertionSortMinPos timeOrderRel φ φs⊢ i < insertionSortMinPos timeOrderRel φ φs All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:¬i < insertionSortMinPos timeOrderRel φ φs⊢ ↑⟨↑i, ⋯⟩ < ↑⟨↑(insertionSortMinPos timeOrderRel φ φs), ⋯⟩ All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1⊢ Fin.cast ⋯ ((Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove ⟨↑i, ⋯⟩) = i 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1⊢ ↑(if ⟨↑i, ⋯⟩ < Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs) then ⟨↑i, ⋯⟩ else ⟨↑i + 1, ⋯⟩) = ↑i 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:⟨↑i, ⋯⟩ < Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)⊢ ↑⟨↑i, ⋯⟩ = ↑i𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:¬⟨↑i, ⋯⟩ < Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)⊢ ↑⟨↑i + 1, ⋯⟩ = ↑i 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:⟨↑i, ⋯⟩ < Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)⊢ ↑⟨↑i, ⋯⟩ = ↑i All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthhi:i < insertionSortMinPos timeOrderRel φ φsh2:↑(insertionSortMinPos timeOrderRel φ φs) < ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).length + 1h✝:¬⟨↑i, ⋯⟩ < Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)⊢ ↑⟨↑i + 1, ⋯⟩ = ↑i All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthh:∃ a, (maxTimeFieldPosFin φ φs).succAbove a < maxTimeFieldPosFin φ φs ∧ Fin.cast ⋯ ((Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove a) = i⊢ i < insertionSortMinPos timeOrderRel φ φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpi:Fin (φ :: φs).lengthj:Fin ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).lengthh1:(maxTimeFieldPosFin φ φs).succAbove j < maxTimeFieldPosFin φ φsh2:Fin.cast ⋯ ((Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove j) = i⊢ i < insertionSortMinPos timeOrderRel φ φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpj:Fin ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).lengthh1:(maxTimeFieldPosFin φ φs).succAbove j < maxTimeFieldPosFin φ φs⊢ Fin.cast ⋯ ((Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove j) < insertionSortMinPos timeOrderRel φ φs 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOpj:Fin ((φ :: φs).eraseIdx ↑(insertionSortMinPos timeOrderRel φ φs)).lengthh1:(maxTimeFieldPosFin φ φs).succAbove j < maxTimeFieldPosFin φ φs⊢ ↑((Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove j) < ↑(insertionSortMinPos timeOrderRel φ φs) All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ (List.take (maxTimeFieldPos φ φs) (List.finRange (φs.length + 1))).Nodup All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ (List.map (Fin.cast ⋯ ∘ (Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove) ({x | (maxTimeFieldPosFin φ φs).succAbove x < maxTimeFieldPosFin φ φs}.sort fun x1 x2 => x1 ≤ x2)).Nodup 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ Function.Injective (Fin.cast ⋯ ∘ (Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove)𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ({x | (maxTimeFieldPosFin φ φs).succAbove x < maxTimeFieldPosFin φ φs}.sort fun x1 x2 => x1 ≤ x2).Nodup 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ Function.Injective (Fin.cast ⋯ ∘ (Fin.cast ⋯ (insertionSortMinPos timeOrderRel φ φs)).succAbove) 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ Function.Injective (Fin.cast ⋯) All goals completed! 🐙 𝓕:FieldSpecificationφ:𝓕.FieldOpφs:List 𝓕.FieldOp⊢ ({x | (maxTimeFieldPosFin φ φs).succAbove x < maxTimeFieldPosFin φ φs}.sort fun x1 x2 => x1 ≤ x2).Nodup All goals completed! 🐙