51 lines
1.4 KiB
Text
51 lines
1.4 KiB
Text
![]() |
/-
|
||
|
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
|
||
|
-/
|
||
|
import Mathlib.Order.Defs.Unbundled
|
||
|
import Mathlib.Data.Fintype.Basic
|
||
|
/-!
|
||
|
|
||
|
# Creation and annihlation parts of fields
|
||
|
|
||
|
-/
|
||
|
|
||
|
/-- The type specifing whether an operator is a creation or annihilation operator. -/
|
||
|
inductive CreateAnnihilate where
|
||
|
| create : CreateAnnihilate
|
||
|
| annihilate : CreateAnnihilate
|
||
|
deriving Inhabited, BEq, DecidableEq
|
||
|
|
||
|
namespace CreateAnnihilate
|
||
|
|
||
|
/-- The type `CreateAnnihilate` is finite. -/
|
||
|
instance : Fintype CreateAnnihilate where
|
||
|
elems := {create, annihilate}
|
||
|
complete := by
|
||
|
intro c
|
||
|
cases c
|
||
|
· exact Finset.mem_insert_self create {annihilate}
|
||
|
· refine Finset.insert_eq_self.mp ?_
|
||
|
exact rfl
|
||
|
|
||
|
/-- The normal ordering on creation and annihlation operators.
|
||
|
Creation operators are put to the left. -/
|
||
|
def normalOrder : CreateAnnihilate → CreateAnnihilate → Prop
|
||
|
| create, create => True
|
||
|
| annihilate, annihilate => True
|
||
|
| create, annihilate => True
|
||
|
| annihilate, create => False
|
||
|
|
||
|
/-- Normal ordering is total. -/
|
||
|
instance : IsTotal CreateAnnihilate normalOrder where
|
||
|
total a b := by
|
||
|
cases a <;> cases b <;> simp [normalOrder]
|
||
|
|
||
|
/-- Normal ordering is transitive. -/
|
||
|
instance : IsTrans CreateAnnihilate normalOrder where
|
||
|
trans a b c := by
|
||
|
cases a <;> cases b <;> cases c <;> simp [normalOrder]
|
||
|
|
||
|
end CreateAnnihilate
|