# 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

[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]