conj

◼ conj[expr] conjugates an expressions.

◼ For fermionic operators, Hermitian conjugation is performed.

◼ For complex numbers, complex conjugation is performed.

◼ For Grassman numbers, conjugation interchanges z and \(TraditionalForm\`\(z\&-\)\).

◼ Real numbers, integers and indexes are invariant under conjugation.

◼ See also: CR, AN, iscreation, isannihilation.

Further examples

Load sneg and declare a, b, c to be fermionic operators, x a real number, z a complex number, i an integer, k an index and g a Grassman number.

<< sneg`sneg`;
snegfermionoperators[a, b, c];
snegrealconstants[x];
snegcomplexconstants[z];
snegintegerconstants[i];
snegfreeindexes[k];
sneggrassmanconstants[g];

Repeated conjugation is automatically eliminated.

conj[conj[a]] == a

The order of operators is reversed under the conjugation

conj[nc[a, b]] == nc[conj[b], conj[a]]

"Linearity"

conj[a + b] == conj[a] + conj[b]
conj[2  a] == 2  conj[a]
conj[x a] == x conj[a]
conj[i a] == i conj[a]
conj[z a] == Conjugate[z] conj[a]

Fermionic operators

conj[c[CR]] == c[AN]
conj[c[AN]] == c[CR]
conj[c[CR, k]] == c[AN, k]
conj[c[CR, k, σ]] == c[AN, k, σ]

Real numbers

conj[1]
conj[π]
conj[x]
conj[Sin[x]]
conj[Exp[x]]

Complex numbers

conj[I]
conj[z]
conj[Sin[z]]
conj[Exp[z]]

Integers

conj[i]

Indexes are not assumed to be real by default, but they can be made so by defining the appropriate upvalue.

conj[k]
conj[KroneckerDelta[k, 0]]
conj[UnitStep[k]]

    
Conjugate[k] ^= k;

    
conj[k]
conj[KroneckerDelta[k, 0]]
conj[UnitStep[k]]

Grassman numbers

g
conj[g]
nc[conj[g], g]

VACUUM placeholder

VACUUM
conj[%]
nc[conj[VACUUM], VACUUM]

Dirac bras and kets

conj[bra[l]] == ket[l]
conj[ket[l]] == bra[l]

nc[bra[m], op, ket[n]]
conj[%]