openfermion.linalg.wedge

Implement the wedge product between left_tensor and right_tensor

The wedge product is defined as

\[ \begin{align} a_{j_{1}, j_{2}, ...,j_{p} }^{i_{1}, i_{2}, ..., i_{p} } \wedge b_{j_{p+1}, j_{p+2}, ..., j_{N} }^{i_{p+1}, i_{p + 2}, ..., i_{N} } = \left(\frac{1}{N!}\right)^{2} = \sum_{\pi, \sigma}\epsilon(\pi) \epsilon(\sigma)\pi \sigma a_{j_{1}, j_{2}, ...,j_{p} }^{i_{1}, i_{2}, ..., i_{p} } b_{j_{p+1}, j_{p+2}, ..., j_{N} }^{i_{p+1}, i_{p + 2}, ..., i_{N} } \end{align} \]

The top indices are those that transform contravariently. The bottom indices transform covariently.

The tensor storage convention for marginals follows the OpenFermion convention. tpdm[i, j, k, l] = , rtensor[u1, u2, u3, d1] =

left_tensor left tensor to wedge product
right_tensor right tensor to wedge product
left_index_ranks tuple of number of indices that transform contravariently and covariently
right_index_ranks tuple of number of indices that transform contravariently and covariently

new tensor constructed as the wedge product of the left_tensor and right_tensor