Elena & Fabrice's Web

In this note I give some particular cases of the module `NormalOrder` (see here for this module itself).

If \(C\) commutes with \(A\) and \(B\) then:

\[[A,BC]=[A,B]C\]

So it is easy to compute expressions like, e.g.,

\[[a^\dagger a,a^\dagger b]\]

factoring out b and computing:

NormalOrder[{{{1, 1, 1, 0}, 1}, {{2, 1}, -1}}] {{{1, 0}, 1}}

we find:

\[[a^\dagger a,a^\dagger b]=a^\dagger b\,.\]

If you followed my trend yesterday you see we're getting closer and closer to a universal engine to solve symbolically (or reduce) quantum systems.

Here is a module that does the commutation directly, computing \(:[elem_1,elem_2]:\):

NormalOrderCommutator[elem1_, elem2_] := Module[{}, NormalOrder[{prod[elem1, elem2], prod[{1, -1}*elem2, elem1]}] ]

in term of another module, prod, which is a component of the NormalOrder module:

prod[sequence__] := Module[{terms}, terms = Transpose[List[sequence]]; {Associate[Flatten[EvenSize /@ (terms[[1]])]], Times @@ terms[[2]]} ] EvenSize[list_] := Module[{}, If[OddQ[Length[list]], Prepend[list, 0], list] ]

Some examples:

NormalOrderCommutator[{{1, 1}, 1}, {{1, 0}, 1}] {{{1, 0}, 1}}

which is the case already given above, or

NormalOrderCommutator[{{1}, 1}, {{1, 0}, 1}] {{{0, 0}, 1}}

which is the fundamental relation \([a,a^\dagger]=1\).