The Serpinski triangle is usually introduced as a fractal made up of three smaller Serpinski triangles. However, that isn't enough to know what it looks like. Which of these is the Serpinski triangle?
The issue with recursive definitions is they create a vicious circle. To get around this, you need to specify a base case, and constructively build out your definition from there. The Python code used to generate the middle triangle looks somewhat like
import turtle
def serpinski(length, min_length=5):
if length < min_length:
return # Stop recursing!
for i in range(3):
serpinski(length / 2, min_length=min_length)
turtle.forward(length)
turtle.left(120)
serpinski(400)
Notice that it halts the recursion after a minimum length. Even if it were not hardcoded, Python's builtin recursion limit or the computer's hardware would force the base case with a RecursionError or MemoryError. Unfortunately, this also means the triangles are no longer self-similar. The outer triangle has six subdivisions, and is made out of triangles with five subdivisions. This can be rectified with an axiom of infinity; then we can choose each triangle to have an ordinal number ω of subdivisions, and since ω=−1+ω it will be self-similar. However, at the end of the subdivisions we still need to define a base case!
Ordinal numbers are sometimes represented by bars, so
1=|,2=||,n=n bars|||…|,ω=|||⋯,
and the Serpinski triangle looks somewhat like
|||⋯△.
Space too is self-similar, so it should have a base defined. In algebraic geometry, these are called simplices. Below, we have a 0-simplex, 1-simplex, and 2-simplex. An n-simplex exists in n-dimensional space, and we build lines, shapes, or volumes by chaining together simplices.
Notice that the boundary of each simplex is built from simplices of one fewer dimension (shown above with arrows). In our notation, [012…n] will mean an n-simplex, and ∂ the boundary operator. We can explicitly calculate the boundary by projecting (dropping) one dimension at a time,
∂[012…n]=n∑k=0(−1)k[01…k−1,k+1…n].
The factor (−1)k makes it so simplices chain together nicely:
giving something called the immanant. Essentially, ρ represents how much "stuff" gets transferred from one vertex to the others. The above assumes all vertices are equivalent (i.e. you have a symmetric group), but the boundary operator could be defined for any group and representation,
∂[abc…n]=∑g∈Gρ(g)[abc…fh…n].
To give an intuitive idea of representations, suppose you are representing rotations in 3D space with matrices. If you want a faithful representation, you would assign a unique matrix to each rotation. Alternatively, a very unfaithful representation would map all rotations to the identity matrix. As long as the application of several rotations is equivalent to matrix multiplication, it is still a valid representation.
Just increasing the dimensions of your matrix implies there must be an infinite number of representations. However, most of these can be broken down into smaller pieces. Remember that matrices are linear operators in vector spaces, e.g. 2×2 matrices are operators on R2. If there is a subspace that is invariant under every matrix in the representation, it means the representation can be further reduced. The set of irreducible representations is much smaller, and satisfies nice orthogonality rules. For example, their characters (χi=Tr[ρi]) form an orthonormal basis:
⟨χi,χj⟩=1|G|∑g∈Gχi(g)†χj(g)={1i=j0i≠j.
Now, suppose we have two physical states |x⟩,|y⟩ such as electron orbitals. Via relativity, we expect our observations to look the same if particles in these states are translated, rotated, or have some other transformation T applied. Observations come from inner products between states, so
⟨y|x⟩=⟨y|T†T|x⟩⟹T†T=I.
Thus, if we have a group of transformations, the types of states can be classified by the group's unitary representations. Elementary particles are just unitary irreducible representations! This is known as Wigner's classification.
All we need to do is find the group, the "base case" of reality, our elementary particles represent. As best we can tell, our universe has three spatial dimensions, which gives three translations and three rotations. The time dimension adds another translation and three "boosts" from special relativity. These ten transformations make up the Poincaré group, known as ISO(3,1). Finally, particles make closed loops within this group, so we need to look at its universal cover ˜ISO(3,1), which we'll shortly explain.
In some groups, all closed loops can be continuously deformed to a point. In others, such as the circle group (points around a circle), not all loops can. The fundamental group is all the kinds of loops, where two loops are considered the same if they can be continuously deformed into each other. For the circle group this is Z, representing an integer number of loops clockwise or counterclockwise. Similarly, a torus' fundamental group is Z2, and a plane's fundamental group is the identity (all loops can be deformed). The universal cover modulo the fundamental group should give you your original group back, i.e.
˜G/π1(G)=G.
The four translations in the Poincaré group make the subgroup R4, which has trivial fundamental group and thus ˜R4=R4. The other six elements are called the Lorentz transformations, and form the group SO(3,1). Their universal cover is a little more difficult to find.
Looking at just the rotations, SO(3), we can represent them by a rotation axis of a sphere, and cover it by the sphere. Both of the poles would map to the same axis, so you could draw a path from one pole to its antipole which would form a closed loop in rotation-space, but not sphere-space. This means there are two kinds of loops—line segments and loops on the sphere—so π1(SO(3))=Z2. I do not have an intuitive explanation, but this also happens to be true when you add the time boosts. Thus, the universal cover of SO(3,1) is the double cover SL(2,C). Put together, the group we're looking for is
It is commutative, so the irreducible representations are one-dimensional (i.e. complex numbers), and the unitary ones lie on the unit circle. This gives the representations
ρ(e[0110]θ)=eiαθ
for some real number α. If you want a finite number of rules, then α needs to be rational, and your quasiparticles are abelian anyons. To keep them stable, you probably want your space dimension to form a circle rather than a line. For example, in the fractional quantum Hall effect, a magnetic field is applied to a metal plate which (at low temperature) creates small circular cyclotrons for these anyons to exist in.
Caution! The following is speculative.
We can use these representations to compute physically meaningful values. The density of states for non-interacting particles is given by
ΩkT=Tr∑g∈Gρ(g)ln(1−x|g|)=∑g∈Gχ(g)ln(1−x|g|)
where x=e−E/kT is the probability of a single particle being in a state with energy E. The interpretation of x|g| is that the particle must diffuse through the full subgroup generated by g. Then,
ln(1−x|g|)=x1|g|1+x2|g|2+x3|g|3+⋯
means it may be dispersed in either one loop, two loops, three loops, etc. Finally, since irreducible representations are orthogonal, the multiplication by ρ or χ projects these loops into our particular representation.
For example, fermions are faithful to the subgroup C2={1,−1}. The grand canonical partition function for fermions is then
Similarly, when the abelian anyons mentioned above exchange clockwise, they pickup a phase of ω=e2πi/n rather than ±1. This naturally corresponds to the group
The Serpinski triangle is usually introduced as a fractal made up of three smaller Serpinski triangles. However, that isn't enough to know what it looks like. Which of these is the Serpinski triangle?
The issue with recursive definitions is they create a vicious circle. To get around this, you need to specify a base case, and constructively build out your definition from there. The Python code used to generate the middle triangle looks somewhat like
Notice that it halts the recursion after a minimum length. Even if it were not hardcoded, Python's builtin recursion limit or the computer's hardware would force the base case with a
RecursionError
orMemoryError
. Unfortunately, this also means the triangles are no longer self-similar. The outer triangle has six subdivisions, and is made out of triangles with five subdivisions. This can be rectified with an axiom of infinity; then we can choose each triangle to have an ordinal number ω of subdivisions, and since ω=−1+ω it will be self-similar. However, at the end of the subdivisions we still need to define a base case!Ordinal numbers are sometimes represented by bars, so
1=|,2=||,n=n bars|||…|,ω=|||⋯,and the Serpinski triangle looks somewhat like
|||⋯△.Space too is self-similar, so it should have a base defined. In algebraic geometry, these are called simplices. Below, we have a 0-simplex, 1-simplex, and 2-simplex. An n-simplex exists in n-dimensional space, and we build lines, shapes, or volumes by chaining together simplices.
Notice that the boundary of each simplex is built from simplices of one fewer dimension (shown above with arrows). In our notation, [012…n] will mean an n-simplex, and ∂ the boundary operator. We can explicitly calculate the boundary by projecting (dropping) one dimension at a time,
∂[012…n]=n∑k=0(−1)k[01…k−1,k+1…n].The factor (−1)k makes it so simplices chain together nicely:
We find
∂([012]+[132])=[12]−[02]+[01]+[32]−[12]+[13]=[01]+[13]+[32]−[02]=[01]+[13]+[32]+[20](since −∂[02]=∂[20])i.e. a path from 0→1→3→2→0. The shared boundary gets eliminated. This is also how the determinant is derived. Let [x]∧[y]=[xy]. Then
|A|⋅[01…n]=(a00[0]+a01[1]+⋯+a0n[n])∧(a10[0]+a11[1]+⋯+a1n[n])∧⋮(an0[0]+an1[1]+⋯+ann[n])As
∂[xx]=[x]−[x]=0,you only need to look at wedge products with every coordinate, hence the famous formula
|A|=∑sgn(σ)a0σ0a1σ1…anσnover permutations σ. However, it turns out the (−1) is rather arbitrary. If you chose (+1) you end up with the permanent,
|A|=∑a0σ0a1σ1…anσn.In fact any group representation can be chosen,
|A|=Tr∑ρ(σ)a0σ0a1σ1…anσn,giving something called the immanant. Essentially, ρ represents how much "stuff" gets transferred from one vertex to the others. The above assumes all vertices are equivalent (i.e. you have a symmetric group), but the boundary operator could be defined for any group and representation,
∂[abc…n]=∑g∈Gρ(g)[abc…fh…n].To give an intuitive idea of representations, suppose you are representing rotations in 3D space with matrices. If you want a faithful representation, you would assign a unique matrix to each rotation. Alternatively, a very unfaithful representation would map all rotations to the identity matrix. As long as the application of several rotations is equivalent to matrix multiplication, it is still a valid representation.
Just increasing the dimensions of your matrix implies there must be an infinite number of representations. However, most of these can be broken down into smaller pieces. Remember that matrices are linear operators in vector spaces, e.g. 2×2 matrices are operators on R2. If there is a subspace that is invariant under every matrix in the representation, it means the representation can be further reduced. The set of irreducible representations is much smaller, and satisfies nice orthogonality rules. For example, their characters (χi=Tr[ρi]) form an orthonormal basis:
⟨χi,χj⟩=1|G|∑g∈Gχi(g)†χj(g)={1i=j0i≠j.Now, suppose we have two physical states |x⟩,|y⟩ such as electron orbitals. Via relativity, we expect our observations to look the same if particles in these states are translated, rotated, or have some other transformation T applied. Observations come from inner products between states, so
⟨y|x⟩=⟨y|T†T|x⟩⟹T†T=I.Thus, if we have a group of transformations, the types of states can be classified by the group's unitary representations. Elementary particles are just unitary irreducible representations! This is known as Wigner's classification.
All we need to do is find the group, the "base case" of reality, our elementary particles represent. As best we can tell, our universe has three spatial dimensions, which gives three translations and three rotations. The time dimension adds another translation and three "boosts" from special relativity. These ten transformations make up the Poincaré group, known as ISO(3,1). Finally, particles make closed loops within this group, so we need to look at its universal cover ˜ISO(3,1), which we'll shortly explain.
In some groups, all closed loops can be continuously deformed to a point. In others, such as the circle group (points around a circle), not all loops can. The fundamental group is all the kinds of loops, where two loops are considered the same if they can be continuously deformed into each other. For the circle group this is Z, representing an integer number of loops clockwise or counterclockwise. Similarly, a torus' fundamental group is Z2, and a plane's fundamental group is the identity (all loops can be deformed). The universal cover modulo the fundamental group should give you your original group back, i.e.
˜G/π1(G)=G.The four translations in the Poincaré group make the subgroup R4, which has trivial fundamental group and thus ˜R4=R4. The other six elements are called the Lorentz transformations, and form the group SO(3,1). Their universal cover is a little more difficult to find.
Looking at just the rotations, SO(3), we can represent them by a rotation axis of a sphere, and cover it by the sphere. Both of the poles would map to the same axis, so you could draw a path from one pole to its antipole which would form a closed loop in rotation-space, but not sphere-space. This means there are two kinds of loops—line segments and loops on the sphere—so π1(SO(3))=Z2. I do not have an intuitive explanation, but this also happens to be true when you add the time boosts. Thus, the universal cover of SO(3,1) is the double cover SL(2,C). Put together, the group we're looking for is
˜ISO(3,1)=R4⋊SL(2,C).In two or one space dimensions, we'd get
˜ISO(2,1)=R3⋊˜SL(2,R),˜ISO(1,1)=R2⋊SO(1,1).One-dimensional "quantum cellular automata" are described by the little group of ˜ISO(1,1),
SO(1,1)=e[0110]θ.It is commutative, so the irreducible representations are one-dimensional (i.e. complex numbers), and the unitary ones lie on the unit circle. This gives the representations
ρ(e[0110]θ)=eiαθfor some real number α. If you want a finite number of rules, then α needs to be rational, and your quasiparticles are abelian anyons. To keep them stable, you probably want your space dimension to form a circle rather than a line. For example, in the fractional quantum Hall effect, a magnetic field is applied to a metal plate which (at low temperature) creates small circular cyclotrons for these anyons to exist in.
Caution! The following is speculative.
We can use these representations to compute physically meaningful values. The density of states for non-interacting particles is given by
ΩkT=Tr∑g∈Gρ(g)ln(1−x|g|)=∑g∈Gχ(g)ln(1−x|g|)where x=e−E/kT is the probability of a single particle being in a state with energy E. The interpretation of x|g| is that the particle must diffuse through the full subgroup generated by g. Then,
ln(1−x|g|)=x1|g|1+x2|g|2+x3|g|3+⋯means it may be dispersed in either one loop, two loops, three loops, etc. Finally, since irreducible representations are orthogonal, the multiplication by ρ or χ projects these loops into our particular representation.
For example, fermions are faithful to the subgroup C2={1,−1}. The grand canonical partition function for fermions is then
Z=e−Ω/kT=exp⎡⎣−∑g∈{1,−1}χ(g)ln(1−x|g|)⎤⎦=exp[ln(1−x2)−ln(1−x1)]=1+e−E/kT.Similarly, when the abelian anyons mentioned above exchange clockwise, they pickup a phase of ω=e2πi/n rather than ±1. This naturally corresponds to the group
Cn={1,ω,ω2,…,ωn−1},so we find
ΩkT=∑d|nln(1−xd)∑|g|=dχ(g)=∑d|nln(1−xd)∑gcd(k,d)=1ωnk/d(Möbius inversion)=∑d|nμ(d)ln(1−xd)where
μ(d)={0d has a squared prime factor,(−1)kd has k distinct prime factorsis the Möbius function. For example, n=6 gives
Z=e−Ω/kT=∏d|6(1−xd)−μ(d)=(1−x2)(1−x3)(1−x)(1−x6)=11−x+x2.