# AntisymmetricProjection

AntisymmetricProjection | |

Produces the projection onto the antisymmetric subspace | |

Other toolboxes required | none |
---|---|

Related functions | SymmetricProjection SwapOperator |

Function category | Permutations and symmetry of subsystems |

` AntisymmetricProjection` is a function that computes the orthogonal projection onto the antisymmetric subspace of two or more subsystems. The output of this function is always a sparse matrix.

## Syntax

`PA = AntisymmetricProjection(DIM)``PA = AntisymmetricProjection(DIM,P)``PA = AntisymmetricProjection(DIM,P,PARTIAL)``PA = AntisymmetricProjection(DIM,P,PARTIAL,MODE)`

## Argument descriptions

`DIM`: The dimension of each of the subsystems.`P`(optional, default 2): The number of subsystems.`PARTIAL`(optional, default 0): If`PARTIAL = 1`then`PA`isn't the orthogonal projection itself, but rather a matrix whose columns form an orthonormal basis for the antisymmetric subspace (and hence`PA*PA'`is the orthogonal projection onto the antisymmetric subspace).`MODE`(optional, default -1): A flag that determines which of two algorithms is used to compute the antisymmetric projection. If`MODE = -1`then this script chooses which algorithm it thinks will be faster based on the values of`DIM`and`P`. If you wish to force the script to use a specific one of the algorithms (not recommended!), they are as follows:`MODE = 0`: Computes the antisymmetric projection by explicitly constructing an orthonormal basis of the antisymmetric subspace. The method for constructing such a basis is a modification of the procedure described for the symmetric subspace in^{[1]}. This method is typically fast when`DIM`is small compared to`P`.`MODE = 1`: Computes the antisymmetric projection by averaging all`P!`permutation operators (in the sense of the`PermutationOperator`function). Permutation operators corresponding to an even permutation are given a weight of +1, while permutation operators corresponding to an odd permutation are given a weight of -1.^{[2]}Because`P!`grows very quickly, this method is only practical when`P`is small.

## Examples

### Two subsystems

To compute the antisymmetric projection on two-qubit space, the following code suffices:

```
>> AntisymmetricProjection(2)
ans =
(2,2) 0.5000
(3,2) -0.5000
(2,3) -0.5000
(3,3) 0.5000
```

Note that the output of this function is always sparse. If you want a full matrix (not recommended for even moderately large `DIM` or `P`), you must explicitly convert it using MATLAB's built-in full function.

### More subsystems and `PARTIAL`

To compute a matrix whose columns form an orthonormal basis for the symmetric subspace of three-qutrit space, set `PARTIAL = 1`:

```
>> PA = AntisymmetricProjection(3,3,1)
PA =
(6,1) 0.4082
(8,1) -0.4082
(12,1) -0.4082
(16,1) 0.4082
(20,1) 0.4082
(22,1) -0.4082
```

Note that `PA` is an isometry from the antisymmetric subspace (which is one-dimensional in this case) to the full three-qutrit space. In other words, `PA'*PA` is the identity matrix (i.e., the scalar 1 here) and `PA*PA'` is the orthogonal projection onto the antisymmetric subspace, which we can verify as follows:

```
>> PA'*PA
ans =
(1,1) 1.0000
>> norm(PA*PA' - AntisymmetricProjection(3,3),'fro')
ans =
3.3307e-016
```

### When `DIM` is too small

When `DIM < P`, the antisymmetric subspace is zero-dimensional, as verified in the `DIM = 4, P = 6` case by the following line of code:

```
>> AntisymmetricProjection(4,6)
ans =
All zero sparse: 4096-by-4096
```

## Source code

Click here to view this function's source code on github.

## References

- ↑ John Watrous. Lecture 21: The quantum de Finetti theorem,
*Theory of Quantum Information Lecture Notes*, 2008. - ↑ R.B. Griffiths. Systems of Identical Particles,
*33-756 Quantum Mechanics II Course Notes*, 2011.