# Penrose graphical notation

In mathematics and physics, Penrose graphical notation or tensor diagram notation is a (usually handwritten) visual depiction of multilinear functions or tensors proposed by Roger Penrose in 1971. A diagram in the notation consists of several shapes linked together by lines.
The notation widely appears in modern quantum theory, particularly in matrix product states and quantum circuits. In particular, categorical quantum mechanics (which includes ZX-calculus) is a fully comprehensive reformulation of quantum theory in terms of Penrose diagrams.
The notation has been studied extensively by Predrag Cvitanović, who used it, along with Feynman's diagrams and other related notations in developing "birdtracks", a group-theoretical diagram to classify the classical Lie groups. Penrose's notation has also been generalized using representation theory to spin networks in physics, and with the presence of matrix groups to trace diagrams in linear algebra.

## Interpretations
### Multilinear algebra

In the language of multilinear algebra, each shape represents a multilinear function. The lines attached to shapes represent the inputs or outputs of a function, and attaching shapes together in some way is essentially the composition of functions.

### Tensors

In the language of tensor algebra, a particular tensor is associated with a particular shape with many lines projecting upwards and downwards, corresponding to abstract upper and lower indices of tensors respectively. Connecting lines between two shapes corresponds to contraction of indices. One advantage of this notation is that one does not have to invent new letters for new indices. This notation is also explicitly basis-independent.

### Matrices

Each shape represents a matrix, and tensor multiplication is done horizontally, and matrix multiplication is done vertically.

## Representation of special tensors
### Metric tensor

The metric tensor is represented by a U-shaped loop or an upside-down U-shaped loop, depending on the type of tensor that is used.
| metric tensor $g^{ab}$ | metric tensor $g_{ab}$ |

### Levi-Civita tensor

The Levi-Civita antisymmetric tensor is represented by a thick horizontal bar with sticks pointing downwards or upwards, depending on the type of tensor that is used.
| $\varepsilon _{ab\ldots n}$ | $\varepsilon ^{ab\ldots n}$ | $\varepsilon _{ab\ldots n}\,\varepsilon ^{ab\ldots n}$$=n!$ |

### Structure constant

The structure constants (${\gamma _{ab}}^{c}$) of a Lie algebra are represented by a small triangle with one line pointing upwards and two lines pointing downwards.

## Tensor operations
### Contraction of indices

Contraction of indices is represented by joining the index lines together.
| Kronecker delta $\delta _{b}^{a}$ | Dot product $\beta _{a}\,\xi ^{a}$ | $g_{ab}\,g^{bc}=\delta _{a}^{c}=g^{cb}\,g_{ba}$ |

### Symmetrization

Symmetrization of indices is represented by a thick zigzag or wavy bar crossing the index lines horizontally.
* Symmetrization $Q^{(ab\ldots n)}$ (with $_{Q^{ab}=Q^{[ab]}+Q^{(ab)}}$)

### Antisymmetrization

Antisymmetrization of indices is represented by a thick straight line crossing the index lines horizontally.
* Antisymmetrization $E_{[ab\ldots n]}$ (with $_{E_{ab}=E_{[ab]}+E_{(ab)}}$)

## Determinant

The determinant is formed by applying antisymmetrization to the indices.
| Determinant $\det \mathbf {T} =\det \left(T_{\ b}^{a}\right)$ | Inverse of matrix $\mathbf {T} ^{-1}=\left(T_{\ b}^{a}\right)^{-1}$ |

### Covariant derivative

The covariant derivative ($\nabla$) is represented by a circle around the tensor(s) to be differentiated and a line joined from the circle pointing downwards to represent the lower index of the derivative.
* covariant derivative $12\nabla _{a}\left(\xi ^{f}\,\lambda _{fb[c}^{(d}\,D_{gh]}^{e)b}\right)$
* $=12\left(\xi ^{f}(\nabla _{a}\lambda _{fb[c}^{(d})\,D_{gh]}^{e)b}+(\nabla _{a}\xi ^{f})\lambda _{fb[c}^{(d}\,D_{gh]}^{e)b}+\xi ^{f}\lambda _{fb[c}^{(d}\,(\nabla _{a}D_{gh]}^{e)b})\right)$

## Tensor manipulation

The diagrammatic notation is useful in manipulating tensor algebra. It usually involves a few simple "identities" of tensor manipulations.
For example, $\varepsilon _{a...c}\varepsilon ^{a...c}=n!$, where n is the number of dimensions, is a common "identity".

### Riemann curvature tensor

The Ricci and Bianchi identities given in terms of the Riemann curvature tensor illustrate the power of the notation
| Notation for the Riemann curvature tensor | Ricci tensor $R_{ab}=R_{acb}^{\ \ \ c}$ | Ricci identity $(\nabla _{a}\,\nabla _{b}-\nabla _{b}\,\nabla _{a})\,\mathbf {\xi } ^{d}$$=R_{abc}^{\ \ \ d}\,\mathbf {\xi } ^{c}$ | Bianchi identity $\nabla _{[a}R_{bc]d}^{\ \ \ e}=0$ |

## Extensions

The notation has been extended with support for spinors and twistors.