makebasis

◼ makebasis[c, d, ...] and makebasis[{c, d, ...}] construct a basis of single-particle creation operators for enlisted operators c, d, ... in the stripped form.

◼ Operators c, d,... must be expressed in the stripped form, i.e. a form which excludes the first index (creation/annihilation) and the last index (spin).

◼ Expansion over both spin orientations is automatically perfromed.

◼ The basis created by makebasis is held in variable BASIS. The basis states for many-particle states for various symmetry types are then constructed by combining these operators using suitable Clebsch-Gordan coefficients. See also qsbasis, qszbasis, qszbasisvc, transformQStoIS, quickISObasis.

◼ See also: basis, goodopQ, op2ndx, ndx2op, vacuum, ap, vc, vc2ops.

Further examples

Load sneg and declare some quantities

<< sneg`sneg`;
snegfermionoperators[c, d];

Construct a basis for two lattice sites c and d

makebasis[{c[], d[]}]
% == BASIS

Create the basis of all many-particle states

Table[
      BASIS IntegerDigits[i, 2, 4], {i, 0, 
        4^2 - 1}]
bz = Map[nc @@ Delete[#, Position[#, 0, 1]] &, %]

Check the orthonormality of the many-particle basis

Outer[scalarproductop, bz, bz] == IdentityMatrix[16]

Transform the basis to the occupation number representation

vak = vacuum[]
Map[ap[#, vak] &, bz]

Construct the many-particle basis with well defined charge (Q) and spin (S) quantum numbers.

qsbasis[{c[], d[]}] // MatrixForm
bzop2bzvc[%, vak] // MatrixForm