# N-body operators

`EnergyExpressions.NBodyOperator`

— Type`NBodyOperator{N}`

Abstract N-body operator coupling `N`

bodies each between two Slater determinants

`EnergyExpressions.LinearCombinationOperator`

— Type`LinearCombinationOperator(operators)`

Represents a linear combination of `NBodyOperator`

s.

`EnergyExpressions.IdentityOperator`

— Type`IdentityOperator{N}`

The N-body identity operator. Leaves the orbital(s) acted upon unchanged.

`EnergyExpressions.ContractedOperator`

— Type`ContractedOperator(a, o, b)`

An `NBodyOperator`

representing the contraction of the operator `o`

over the orbital sets `a`

and `b`

. The lengths of `a`

and `b`

have to equal, and they cannot exceed the dimension of `o`

.

`Base.in`

— Method`in(orbital, co::ContractedOperator)`

Test if `orbital`

is among the right set of orbitals of the `ContractedOperator`

`co`

. Useful to test if `co`

is an integral operator with respect to `orbital`

.

`Base.in`

— Method`in(corbital::Conjugate, co::ContractedOperator)`

Test if `corbital`

is among the left set of orbitals of the `ContractedOperator`

`co`

. Useful to test if `co`

is an integral operator with respect to `corbital`

.

`EnergyExpressions.contract`

— Function`contract(orbital_matrix_element, i...)`

Contract the `orbital_matrix_element`

over all coordinates `i...`

.

`EnergyExpressions.complement`

— Function`complement(N, i...)`

Generate the complement to `i...`

in the set `1:N`

. Useful for contracting `OrbitalMatrixElement`

s over all coordinates *except* `i...`

.

`LinearAlgebra.ishermitian`

— Method`ishermitian(op::QuantumOperator)`

By default, all `QuantumOperator`

s are Hermitian; this can be overridden for subtypes to explicitly declare an operator non-Hermitian.