Suppose CR is my creation operator and AR is my annihilation operator.
I have to show that CR.AR= N, where N is a number.
In general, it should be like CR.AR = CR1.AR1 + CR2.AR2 + CR3.AR3= N1 + N2 + N3 = N
I have been trying to achieve this using sneg package But unable to find a way.
I have also tried a solution given to another problem here.
qOperatorQ[expr_] := MatchQ[expr, qCO | qDO | Ket[n_Integer]];
(* take scalars out *)
CenterDot[left___, Times[scalar_?NumericQ, op_?qOperatorQ], right___] := Times[
scalar,
CenterDot[left, op, right]
];
(* Implement commutation relations *)
CenterDot[left___, qDO, qCO, right___] := Plus[
CenterDot[left, qCO, qDO, right],
CenterDot[left, right]
];
(* Allow to use powers of operators *)
CenterDot[left___, Power[op : (qCO | qDO), n_Integer], right___] := CenterDot[
left,
Sequence @@ ConstantArray[op, n],
right
];
(* effective OneIdentity attribute *)
CenterDot[op_?qOperatorQ] := op;
(* implement action on Fock states *)
CenterDot[left___, qDO, Ket[0]] := 0;
CenterDot[left___, qCO, Ket[n_Integer]] := Times[
Sqrt[n + 1],
CenterDot[left, Ket[n + 1]]
];
CenterDot[left___, qDO, Ket[n_Integer]] := Times[
Sqrt[n],
CenterDot[left, Ket[n - 1]]
];
Now using the above code when I defined CR and AR and use them on a ket state I get a result as below. But How do I find the expectation value, i.e. Bra[4]\[CenterDot]SuperDagger[a]\[CenterDot]a\[CenterDot]Ket[4]?
AR = qDO;
CR = qCO;
CR\[CenterDot]AR\[CenterDot]Ket[2]
Out[%]= 2 Ket[2]