Skip to content

Diagram Algebras

A diagram algebra is an algebra whose basis you can draw. An element of the partition algebra is a set partition of points — a top row and a bottom row — pictured as two rows of dots with each block joined up:

A diagram is a picture

Three strands. The block {1, 2, −1, −2} joins both rows; {3, −3} runs straight down.

source
<notatio-figure kind="diagram" value="[0,0,1,0,0,1]" />
<notatio-figure kind="diagram" value="[0,1,2,0,1,2]" />
<notatio-figure kind="diagram" value="[0,1,2,1,0,2]" />

Multiplication is geometric, and it is the whole subject: stack above , glue 's bottom row to 's top row, read off which outer points are now connected, and throw the middle away. A block that ends up living entirely in the discarded middle was a closed loop, and each closed loop contributes a factor of the loop parameter. So the algebra is defined over , and stays a symbol here unless you give it a value.

The lattice of subalgebras

Where the hypercomplex families differed only in a square and a commutation rule, these differ only in which diagrams are admitted — and each restriction is closed under stacking, so each one is a subalgebra. That is the whole parameterisation:

AlgebraDiagrams admittedDimensionSequence
PartitionAlgebra(n)all set partitions of Bell
PlanarPartitionAlgebra(n)planar onesCatalan
BrauerAlgebra(n)perfect matchingsdouble factorial
TemperleyLiebAlgebra(n)planar perfect matchingsCatalan
MotzkinAlgebra(n)planar, blocks of size ≤ 2Motzkin
RookAlgebra(n)partial permutationsrook
SymmetricGroupAlgebra(n)permutationsfactorial

Every one of those dimensions is a sequence enumeratio already counts — which is the point of putting these here rather than anywhere else.

Dimensions are the counting sequences

B(6) = 203, and the catalogue's own BellNumber agrees.

source
<notatio-cell value="AlgebraDimension(PartitionAlgebra(3))" />
<notatio-cell value="BellNumber(6)" />
<notatio-cell value="AlgebraDimension(TemperleyLiebAlgebra(4))" />
<notatio-cell value="CatalanNumber(4)" />

The dimension comes from the closed form, so it answers well past the point where listing the basis would be useful.

Dimension without enumeration

source
<notatio-cell value="AlgebraDimension(PartitionAlgebra(6))" />
<notatio-cell value="AlgebraDimension(BrauerAlgebra(8))" />
<notatio-cell value="Basis(TemperleyLiebAlgebra(3))" />

The product, and where δ comes from

Write a diagram as Diagram([[1,2],[-1,-2]]) — blocks of signed labels, positive on the top row and negative on the bottom. The Temperley–Lieb generator is the cup-cap: it joins the two top points to each other and the two bottom points to each other.

Stack on itself and the middle closes a loop — which is exactly the relation , the defining relation of the Temperley–Lieb algebra.

e₁² = δe₁

The cup-cap squared: one closed loop, so one factor of δ.

source
<notatio-figure kind="diagram" value="[0,0,1,1]" />
<notatio-cell value="CircleTimes(Diagram([[1, 2], [-1, -2]]), Diagram([[1, 2], [-1, -2]]))" />

The product is the ordered one — NonCommutativeMultiply, or infix , the same head the hypercomplex units use. A diagram algebra is not commutative, so × is the wrong home for it, for exactly the reason set out there.

The other Temperley–Lieb relations fall out of the same stacking:

e₁e₂e₁ = e₁ in TL₃

No loop closes, and the result is e₁ back again — no δ in sight.

source
<notatio-cell value="CircleTimes(
             Diagram([[1, 2], [-1, -2], [3, -3]]),
             Diagram([[2, 3], [-2, -3], [1, -1]]),
             Diagram([[1, 2], [-1, -2], [3, -3]]),
           )" />

Containment tells the subalgebras apart

Because each algebra is a class of diagrams, membership is a real question with a real answer — and it is how the inclusions become checkable. The crossing is a Brauer diagram and a permutation, but not planar, so it is not Temperley–Lieb.

Which algebra is this diagram in?

source
<notatio-figure kind="diagram" value="[0,1,2,1,0,2]" />
<notatio-cell value="Diagram([[1, -2], [2, -1], [3, -3]]) in BrauerAlgebra(3)" />
<notatio-cell value="Diagram([[1, -2], [2, -1], [3, -3]]) in TemperleyLiebAlgebra(3)" />
<notatio-cell value="Diagram([[1, 2], [-1, -2], [3, -3]]) in TemperleyLiebAlgebra(3)" />
<notatio-cell value="Diagram([[1, 2], [-1, -2], [3, -3]]) in SymmetricGroupAlgebra(3)" />

A block of three points is a partition diagram and nothing smaller — Brauer and below admit only blocks of size two.

Bigger blocks leave the matchings behind

source
<notatio-figure kind="diagram" value="[0,0,1,0,2,1]" />
<notatio-cell value="Diagram([[1, 2, -1], [3, -3], [-2]]) in PartitionAlgebra(3)" />
<notatio-cell value="Diagram([[1, 2, -1], [3, -3], [-2]]) in BrauerAlgebra(3)" />

The orbit basis

The diagram basis is the obvious one — one element per set partition — but it is not the one the partition algebra's representation theory is written in. That is the orbit basis , and the difference is a quantifier:

asks for those points to be connected. asks for them to be connected and nothing else.

So a diagram is the union of the orbits that refine it, and the two bases are related by summing over the partition lattice and inverting:

A quantifier, as a change of basis

The coarsest partition has nothing above it, so the two bases agree there.

source
<notatio-cell value="InOrbitBasis(Diagram([[1], [-1]]))" />
<notatio-cell value="InDiagramBasis(OrbitDiagram([[1], [-1]]))" />
<notatio-cell value="InOrbitBasis(Diagram([[1, -1]]))" />
<notatio-cell value="DiagramCoarsenings(Diagram([[1], [-1]]))" />

The Möbius function is the partition lattice's, not the Boolean one's:

with the number of -blocks inside the block . That is worth setting beside the Hopf-algebra bases, which come from the same kind of inversion over the Boolean lattice, where the Möbius function is only a sign. The factorials here are the difference between merging any set of blocks and merging only adjacent ones — and they are checked against the recursion rather than taken on faith.

Möbius over the partition lattice

Merging four points into one block: (−1)³·3! = −6. Coarsening is partitioning the blocks, so there are Bell(4) = 15 ways.

source
<notatio-cell value="PartitionMobius(Diagram([[1], [2], [-1], [-2]]), Diagram([[1, 2, -1, -2]]))" />
<notatio-cell value="PartitionMobius(Diagram([[1, -1]]), Diagram([[1, -1]]))" />
<notatio-cell value="BellNumber(4)" />

What the orbit basis buys is a statement that has no clean form in the diagram basis at all: the map onto the centraliser algebra of the symmetric group acting on kills exactly when has more blocks than . Specialising the loop parameter to an integer therefore just deletes basis elements — which is why the subject is written in .

Things worth knowing

The loop parameter is a free symbol. These algebras are defined over , so a product returns a -power times a diagram and leaves alone. Substitute a value when you want one — at the Brauer algebra degenerates, and the interesting representation theory lives at special values.

A diagram must partition all points. Diagram([[1,-1],[2]]) is missing , so it is malformed and is left exactly as written rather than read as having an implicit singleton. Diagrams also normalise: blocks come back in canonical order, so a written diagram and a computed one are the same expression.

Two libraries, one set of heads. Basis, AlgebraDimension, Element and the ordered product are declared once by @enumeratio/algebra and dispatched over registered providers. compute-engine refuses a second ce.declare of a head an extension already declared, so this seam is what lets the diagram algebras and the hypercomplex units live on one engine — and what makes adding a third family a matter of registering one object.

What is not here yet. Representation theory: the cell / standard modules, the semisimplicity criteria (which fail at special δ), and the Jones basic construction. The Jones polynomial via the Temperley–Lieb trace is the obvious next thing to build, and it would tie these diagrams to the knot-theory side of the catalogue.