Statebox: A Universal Language of Distributed Systems

22 January, 2018

guest post by Christian Williams

A short time ago, on the Croatian island of Zlarin, there gathered a band of bold individuals—rebels of academia and industry, whose everyday thoughts and actions challenge the separations of the modern world. They journeyed from all over to learn of the grand endeavor of another open mind, an expert functional programmer and creative hacktivist with significant mathematical knowledge: Jelle |yell-uh| Herold.

The Dutch computer scientist has devoted his life to helping our species and our planet: from consulting in business process optimization to winning a Greenpeace hackathon, from updating Netherlands telecommunications to creating a website to determine ways for individuals to help heal the earth, Jelle has gained a comprehensive perspective of the interconnected era. Through a diverse and innovative career, he has garnered crucial insights into software design and network computation—most profoundly, he has realized that it is imperative that these immense forces of global change develop thoughtful, comprehensive systematization.

Jelle understood that initiating such a grand ambition requires a massive amount of work, and the cooperation of many individuals, fluent in different fields of mathematics and computer science. Enter the Zlarin meeting: after a decade of consideration, Jelle has now brought together proponents of categories, open games, dependent types, Petri nets, string diagrams, and blockchains toward a singular end: a universal language of distributed systems—Statebox.

Statebox is a programming language formed and guided by fundamental concepts and principles of theoretical mathematics and computer science. The aim is to develop the canonical process language for distributed systems, and thereby elucidate the way these should actually be designed. The idea invokes the deep connections of these subjects in a novel and essential way, to make code simple, transparent, and concrete. Category theory is both the heart and pulse of this endeavor; more than a theory, it is a way of thinking universally. We hope the project helps to demonstrate the importance of this perspective, and encourages others to join.

The language is designed to be self-optimizing, open, adaptive, terminating, error-cognizant, composable, and most distinctively—visual. Petri nets are the natural representation of decentralized computation and concurrency. By utilizing them as program models, the entire language is diagrammatic, and this allows one to inspect the flow of the process executed by the program. While most languages only compile into illegible machine code, Statebox compiles directly into diagrams, so that the user immediately sees and understands the concrete realization of the abstract design. We believe that this immanent connection between the “geometric” and “algebraic” aspects of computation is of great importance.

Compositionality is a rightfully popular contemporary term, indicating the preservation of type under composition of systems or processes. This is essential to the universality of the type, and it is intrinsic to categories, which underpin the Petri net. A pertinent example is that composition allows for a form of abstraction in which programs do not require complete specification. This is parametricity: a program becomes executable when the functions are substituted with valid terms. Every term has a type, and one cannot connect pieces of code that have incompatible inputs and outputs—the compiler would simply produce an error. The intent is to preserve a simple mathematical structure that imposes as little as possible, and still ensure rationality of code. We can then more easily and reliably write tools providing automatic proofs of termination and type-correctness. Many more aspects will be explained as we go along, and in more detail in future posts.

Statebox is more than a specific implementation. It is an evolving aspiration, expressing an ideal, a source of inspiration, signifying a movement. We fully recognize that we are at the dawn of a new era, and do not assume that the current presentation is the best way to fulfill this ideal—but it is vital that this kind of endeavor gains the hearts and minds of these communities. By learning to develop and design by pure theory, we make a crucial step toward universal systems and knowledge. Formalisms are biased, fragile, transient—thought is eternal.

Thank you for reading, and thank you to John Baez—|bi-ez|, some there were not aware—for allowing me to write this post. Azimuth and its readers represent what scientific progress can and should be; it is an honor to speak to you. My name is Christian Williams, and I have just begun my doctoral studies with Dr. Baez. He received the invitation from Jelle and could not attend, and was generous enough to let me substitute. Disclaimer: I am just a young student with big dreams, with insufficient knowledge to do justice to this huge topic. If you can forgive some innocent confidence and enthusiasm, I would like to paint a big picture, to explain why this project is important. I hope to delve deeper into the subject in future posts, and in general to celebrate and encourage the cognitive revolution of Applied Category Theory. (Thank you also to Anton and Fabrizio for providing some of this writing when I was not well; I really appreciate it.)

Statebox Summit, Zlarin 2017, was awesome. Wish you could’ve been there. Just a short swim in the Adriatic from the old city of Šibenik |shib-enic|, there lies the small, green island of Zlarin |zlah-rin|, with just a few hundred kind inhabitants. Jelle’s friend, and part of the Statebox team, Anton Livaja and his family graciously allowed us to stay in their houses. Our headquarters was a hotel, one of the few places open in the fall. We set up in the back dining room for talks and work, and for food and sunlight we came to the patio and were brought platters of wonderful, wholesome Croatian dishes. As we burned the midnight oil, we enjoyed local beer, and already made history—the first Bitcoin transaction of the island, with a progressive bartender, Vinko.

Zlarin is a lovely place, but we haven’t gotten to the best part—the people. All who attended are brilliant, creative, and spirited. Everyone’s eyes had a unique spark to light. I don’t think I’ve ever met such a fascinating group in my life. The crew: Jelle, Anton, Emi Gheorghe, Fabrizio Genovese, Daniel van Dijk, Neil Ghani, Viktor Winschel, Philipp Zahn, Pawel Sobocinski, Jules Hedges, Andrew Polonsky, Robin Piedeleu, Alex Norta, Anthony di Franco, Florian Glatz, Fredrik Nordvall Forsberg. These innovators have provocative and complementary ideas in category theory, computer science, open game theory, functional programming, and the blockchain industry; and they came to share an important goal. These are people who work earnestly to better humanity, motivated by progress, not profit. Talking with them gave me hope, that there are enough intelligent, open-minded, and caring people to fix this mess of modern society. In our short time together, we connected—now, almost all continue to contribute and grow the endeavor.

Why is society a mess? The present human condition is absurd. We are in a cognitive renaissance, yet our world is in peril. We need to realize a deeper harmony of theory and practice—we need ideas that dare to dream big, that draw on the vast wealth of contemporary thought to guide and unite subjects in one mission. The way of the world is only a reflection of how we choose to think, and for more than a century we have delved endlessly into thought itself. If we truly learn from our thought, knowledge and application become imminently interrelated, not increasingly separate. It is imperative that we abandon preconception, pretense and prejudice, and ask with naive sincerity: “How should things be, really, and how can we make it happen?”

This pertains more generally to the irresponsibly ad hoc nature of society—we find ourselves entrenched in inadequate systems. Food, energy, medicine, finance, communications, media, governance, technology—our deepening dependence on centralization is our greatest vulnerability. Programming practice is the perfect example of the gradual failure of systems when their design is left to wander in abstraction. As business requirements evolved, technological solutions were created haphazardly, the priority being immediate return over comprehensive methodology, which resulted in ‘duct-taped’ systems, such as the Windows OS. Our entire world now depends on unsystematic software, giving rise to so much costly disorganization, miscommunication, and worse, bureaucracy. Statebox aims to close the gap between the misguided formalisms which came out of this type of degeneration, and design a language which corresponds naturally to essential mathematical concepts—to create systems which are rational, principled, universal. To explain why Statebox represents to us such an important ideal, we must first consider its closest relative, the elephant in the technological room: blockchain.

Often the best ideas are remarkably simple—in 2008, an unknown person under the alias Satoshi Nakamoto published the whitepaper Bitcoin: A Peer-to-Peer Electronic Cash System. In just a few pages, a protocol was proposed which underpins a new kind of computational network, called a blockchain, in which interactions are immediate, transparent, and permanent. This is a personal interpretation—the paper focuses on the application given in its title. In the original financial context, immediacy is one’s ability to directly transact with anyone, without intermediaries, such as banks; transparency is one’s right to complete knowledge of the economy in which one participates, meaning that each node owns a copy of the full history of the network; permanence is the irrevocability of one’s transactions. These core aspects are made possible by an elegant use of cryptography and game theory, which essentially removes the need for trusted third parties in the authorization, verification, and documentation of transactions. Per word, it’s almost peerless in modern influence; the short and sweet read is recommended.

The point of this simplistic explanation is that blockchain is about more than economics. The transaction could be any cooperation, the value could be any social good—when seen as a source of consensus, the blockchain protocol can be expanded to assimilate any data and code. After several years of competing cryptocurrencies, the importance of this deeper idea was gradually realized. There arose specialized tools to serve essential purposes in some broader system, and only recently have people dared to conceive of what this latter could be. In 2014, a wunderkind named Vitalik Buterin created Ethereum, a fully programmable blockchain. Solidity is a Turing-complete language of smart contracts, autonomous programs which enable interactions and enact rules on the network. With this framework, one can not only transact with others, but implement any kind of process; one can build currencies, websites, or organizations—decentralized applications, constructed with smart contracts, could be just about anything.

There is understandably great confidence and excitement for these ventures, and many are receiving massive public investment. Seriously, the numbers are staggering—but most of it is pure hype. There is talk of the first global computer, the internet of value, a single shared source of truth, and other speculative descriptions. But compared to the ambition, the actual theory is woefully underdeveloped. So far, implementations make almost no use of the powerful ideas of mathematics. There are still basic flaws in blockchain itself, the foundation of almost all decentralized technology. For example, the two viable candidates for transaction verification are called Proof of Work and Proof of Stake: the former requires unsustainable consumption of resources, namely hardware and electricity, and the latter is susceptible to centralization. Scalability is a major problem, thus also cost and speed of transactions. A major Ethereum dApp, Decentralized Autonomous Organization, was hacked.

These statements are absolutely not to disregard all of the great work of this community; it is primarily rhetoric to distinguish the high ideals of Statebox, and I lack the eloquence to make the point diplomatically, nor near the knowledge to give a real account of this huge endeavor. We now return to the rhetoric.

What seems to be lost in the commotion is the simple recognition that we do not yet really know what we should make, nor how to do so. The whole idea is simply too big—the space of possibility is almost completely unknown, because this innovation can open every aspect of society to reform. But as usual, people try to ignore their ignorance, imagining it will disappear, and millions clamor about things we do not yet understand. Most involved are seeing decentralization as an exciting business venture, rather than our best hope to change the way of this broken world; they want to cash in on another technological wave. Of the relatively few idealists, most still retain the assumptions and limitations of the blockchain.

For all this talk, there is little discussion of how to even work toward the ideal abstract design. Most mathematics associated to blockchain is statistical analysis of consensus, while we’re sitting on a mountain of powerful categorical knowledge of systems. At the summit, Prof. Neil Ghani said “it’s like we’re on the Moon, talking about going to Mars, while everyone back on Earth still doesn’t even have fire.” We have more than enough conceptual technology to begin developing an ideal and comprehensive system, if the right minds come together. Theory guides practice, practice motivates theory—the potential is immense.

Fortunately, there are those who have this big picture in mind. Long before the blockchain craze, Jelle saw the fundamental importance of both distributed systems and the need for academic-industrial symbiosis. In the mid-2000’s, he used Petri nets to create process tools for businesses. Employees could design and implement any kind of abstract workflow to more effectively communicate and produce. Jelle would provide consultation to optimize these processes, and integrate them into their existing infrastructure—as it executed, it would generate tasks, emails, forms and send them to designated individuals to be completed for the next iteration. Many institutions would have to shell out millions of dollars to IBM or Fujitsu for this kind of software, and his was more flexible and intuitive. This left a strong impression on Jelle, regarding the power of Petri nets and the impact of deliberate design.

Many experiences like this gradually instilled in Jelle a conviction to expand his knowledge and begin planning bold changes to the world of programming. He attended mathematics conferences, and would discuss with theorists from many relevant subjects. On the island, he told me that it was actually one of Baez’s talks about networks which finally inspired him to go for this huge idea. By sincerely and openly reaching out to the whole community, Jelle made many valuable connections. He invited these thinkers to share his vision—theorists from all over Europe, and some from overseas, gathered in Croatia to learn and begin to develop this project—and it was a great success.

By now you may be thinking, alright kid spill the beans already. Here they are, right into your brain—well, most will be in the next post, but we should at least have a quick overview of some of the main ideas not already discussed.

The notion of open system complements compositionality. The great difference between closure and openness, in society as well as theory, was a central theme in many of our conversations during the summit. Although we try to isolate and suspend life and cognition in abstraction, the real, concrete truth is what flows through these ethereal forms. Every system in Statebox is implicitly open, and this impels design to idealize the inner and outer connections of processes. Open systems are central to the Baez Network Theory research team. There are several ways to categorically formalize open systems; the best are still being developed, but the first main example can be found in The Algebra of Open and Interconnected Systems by Brendan Fong, an early member of the team.

Monoidal categories, as this blog knows well, represent systems with both series and parallel processes. One of the great challenge of this new era of interconnection is distributed computation—getting computers to work together as a supercomputer, and monoidal categories are essential to this. Here, objects are data types, and morphisms are computations, while composition is serial and tensor is parallel. As Dr. Baez has demonstrated with years of great original research, monoidal categories are essential to understanding the complexity of the world. If we can connect our knowledge of natural systems to social systems, we can learn to integrate valuable principles—a key example being complete resource cognizance.

Petri nets are presentations of free strict symmetric monoidal categories, and as such they are ideal models of “normal” computation, i.e. associative, unital, and commutative. Open Petri nets are the workhorses of Statebox. They are the morphisms of a category which is itself monoidal—and via openness it is even richer and more versatile. Most importantly it is compact closed, which introduces a simple but crucial duality into computation—input-output interchange—which is impossible in conventional cartesian closed computation, and actually brings the paradigm closer to quantum computation

Petri nets represent processes in an intuitive, consistent, and decentralized way. These will be multi-layered via the notion of operad and a resourceful use of Petri net tokens, representing the interacting levels of a system. Compositionality makes exploring their state space much easier: the state space of a big process can be constructed from those of smaller ones, a technique that more often than not avoids state space explosion, a long-standing problem in Petri net analysis. The correspondence between open Petri nets and a logical calculus, called place/transition calculus, allows the user to perform queries on the Petri net, and a revolutionary technique called information-gain computing greatly reduces response time.

Dependently typed functional programming is the exoskeleton of this beautiful beast; in particular, the underlying language is Idris. Dependent types arose out of both theoretical mathematics and computer science, and they are beginning to be recognized as very general, powerful, and natural in practice. Functional programming is a similarly pure and elegant paradigm for “open” computation. They are fascinating and inherently categorical, and deserve whole blog posts in the future.

Even economics has opened its mind to categories. Statebox is very fortunate to have several of these pioneers—open game theory is a categorical, compositional version of game theory, which allows the user to dynamically analyze and optimize code. Jules’ choice of the term “teleological category” is prescient; it is about more than just efficiency—it introduces the possibility of building principles into systems, by creating game-theoretical incentives which can guide people to cooperate for the greater good, and gradually lessen the influence of irrational, selfish priorities.

Categories are the language by which Petri nets, functional programming, and open games can communicate—and amazingly, all of these theories are unified in an elegant representation called string diagrams. These allow the user to forget the formalism, and reason purely in graphical terms. All the complex mathematics goes under the hood, and the user only needs to work with nodes and strings, which are guaranteed to be formally correct.

Category theory also models the data structures that are used by Statebox: Typedefs is a very lightweight—but also very expressive—data structure, that is at the very core of Statebox. It is based on initial F-algebras, and can be easily interpreted in a plethora of pre-existing solutions, enabling seamless integration with existing systems. One of the core features of Typedefs is that serialization is categorically internalized in the data structure, meaning that every operation involving types can receive a unique hash and be recorded on the blockchain public ledger. This is one of the many components that make Statebox fail-resistant: every process and event is accounted for on the public ledger, and the whole history of a process can be rolled back and analyzed thanks to the blockchain technology.

The Statebox team is currently working on a monograph that will neatly present how all the pertinent categorical theories work together in Statebox. This is a formidable task that will take months to complete, but will also be the cleanest way to understand how Statebox works, and which mathematical questions have still to be answered to obtain a working product. It will be a thorough document that also considers important aspects such as our guiding ethics.

The team members are devoted to creating something positive and different, explicitly and solely to better the world. The business paradigm is based on the principle that innovation should be open and collaborative, rather than competitive and exclusive. We want to share ideas and work with you. There are many blooming endeavors which share the ideals that have been described in this article, and we want them all to learn from each other and build off one another.

For example, Statebox contributor and visionary economist Viktor Winschel has a fantastic project called Oicos. The great proponent of applied category theory, David Spivak, has an exciting and impressive organization called Categorical Informatics. Mike Stay, a past student of Dr. Baez, has started a company called Pyrofex, which is developing categorical distributed computation. There are also somewhat related languages for blockchain, such as Simplicity, and innovative distributed systems such as Iota and RChain. Even Ethereum is beginning to utilize categories, with Casper. And of course there are research groups, such as Network Theory and Mathematically Structured Programming, as well as so many important papers, such as Algebraic Databases. This is just a slice of everything going on; as far as I know there is not yet a comprehensive account of all the great applied category theory and distributed innovations being developed. Inevitably these endeavors will follow the principle they share, and come together in a big way. Statebox is ready, willing, and able to help make this reality.

If you are interested in Statebox, you are welcomed with open arms. You can contact Jelle at jelle@statebox.io, Fabrizio at fabrizio@statebox.org, Emi at emi@statebox.io, Anton at anton@statebox.io; they can provide more information, connect you to the discussion, or anything else. There will be a second summit in 2018 in about six months, details to be determined. We hope to see you there. Future posts will keep you updated, and explain more of the theory and design of Statebox. Thank you very much for reading.

P.S. Found unexpected support in Šibenik! Great bar—once a reservoir.


Retrotransposons

14 January, 2018

This article is very interesting:

• Ed Yong, Brain cells share information with virus-like capsules, Atlantic, January 12, 2018.

Your brain needs a protein called Arc. If you have trouble making this protein, you’ll have trouble forming new memories. The neuroscientist Jason Shepherd noticed something weird:

He saw that these Arc proteins assemble into hollow, spherical shells that look uncannily like viruses. “When we looked at them, we thought: What are these things?” says Shepherd. They reminded him of textbook pictures of HIV, and when he showed the images to HIV experts, they confirmed his suspicions. That, to put it bluntly, was a huge surprise. “Here was a brain gene that makes something that looks like a virus,” Shepherd says.

That’s not a coincidence. The team showed that Arc descends from an ancient group of genes called gypsy retrotransposons, which exist in the genomes of various animals, but can behave like their own independent entities. They can make new copies of themselves, and paste those duplicates elsewhere in their host genomes. At some point, some of these genes gained the ability to enclose themselves in a shell of proteins and leave their host cells entirely. That was the origin of retroviruses—the virus family that includes HIV.

It’s worth pointing out that gypsy is the name of a specific kind of retrotransposon. A retrotransposon is a gene that can make copies of itself by first transcribing itself from DNA into RNA and then converting itself back into DNA and inserting itself at other places in your chromosomes.

About 40% of your genes are retrotransposons! They seem to mainly be ‘selfish genes’, focused on their own self-reproduction. But some are also useful to you.

So, Arc genes are the evolutionary cousins of these viruses, which explains why they produce shells that look so similar. Specifically, Arc is closely related to a viral gene called gag, which retroviruses like HIV use to build the protein shells that enclose their genetic material. Other scientists had noticed this similarity before. In 2006, one team searched for human genes that look like gag, and they included Arc in their list of candidates. They never followed up on that hint, and “as neuroscientists, we never looked at the genomic papers so we didn’t find it until much later,” says Shepherd.

I love this because it confirms my feeling that viruses are deeply entangled with our evolutionary past. Computer viruses are just the latest phase of this story.

As if that wasn’t weird enough, other animals seem to have independently evolved their own versions of Arc. Fruit flies have Arc genes, and Shepherd’s colleague Cedric Feschotte showed that these descend from the same group of gypsy retrotransposons that gave rise to ours. But flies and back-boned animals co-opted these genes independently, in two separate events that took place millions of years apart. And yet, both events gave rise to similar genes that do similar things: Another team showed that the fly versions of Arc also sends RNA between neurons in virus-like capsules. “It’s exciting to think that such a process can occur twice,” says Atma Ivancevic from the University of Adelaide.

This is part of a broader trend: Scientists have in recent years discovered several ways that animals have used the properties of virus-related genes to their evolutionary advantage. Gag moves genetic information between cells, so it’s perfect as the basis of a communication system. Viruses use another gene called env to merge with host cells and avoid the immune system. Those same properties are vital for the placenta—a mammalian organ that unites the tissues of mothers and babies. And sure enough, a gene called syncytin, which is essential for the creation of placentas, actually descends from env. Much of our biology turns out to be viral in nature.

Here’s something I wrote in 1998 when I was first getting interested in this business:

RNA reverse transcribing viruses

RNA reverse transcribing viruses are usually called retroviruses. They have a single-stranded RNA genome. They infect animals, and when they get inside the cell’s nucleus, they copy themselves into the DNA of the host cell using reverse transcriptase. In the process they often cause tumors, presumably by damaging the host’s DNA.

Retroviruses are important in genetic engineering because they raised for the first time the possibility that RNA could be transcribed into DNA, rather than the reverse. In fact, some of them are currently being deliberately used by scientists to add new genes to mammalian cells.

Retroviruses are also important because AIDS is caused by a retrovirus: the human immunodeficiency virus (HIV). This is part of why AIDS is so difficult to treat. Most usual ways of killing viruses have no effect on retroviruses when they are latent in the DNA of the host cell.

From an evolutionary viewpoint, retroviruses are fascinating because they blur the very distinction between host and parasite. Their genome often contains genetic information derived from the host DNA. And once they are integrated into the DNA of the host cell, they may take a long time to reemerge. In fact, so-called endogenous retroviruses can be passed down from generation to generation, indistinguishable from any other cellular gene, and evolving along with their hosts, perhaps even from species to species! It has been estimated that up to 1% of the human genome consists of endogenous retroviruses! Furthermore, not every endogenous retrovirus causes a noticeable disease. Some may even help their hosts.

It gets even spookier when we notice that once an endogenous retrovirus lost the genes that code for its protein coat, it would become indistinguishable from a long terminal repeat (LTR) retrotransposon—one of the many kinds of “junk DNA” cluttering up our chromosomes. Just how much of us is made of retroviruses? It’s hard to be sure.

For my whole article, go here:

Subcellular life forms.

It’s about the mysterious subcellular entities that stand near the blurry border between the living and the non-living—like viruses, viroids, plasmids, satellites, transposons and prions. I need to update it, since a lot of new stuff is being discovered!

Jason Shepherd’s new paper has a few other authors:

• Elissa D. Pastuzyn, Cameron E. Day, Rachel B. Kearns, Madeleine Kyrke-Smith, Andrew V. Taibi, John McCormick, Nathan Yoder, David M. Belnap, Simon Erlendsson, Dustin R. Morado, John A.G. Briggs, Cédric Feschotte and Jason D. Shepherd, The neuronal gene Arc encodes a repurposed retrotransposon gag protein that mediates intercellular RNA transfer, Cell 172 (2018), 275–288.


The Kepler Problem (Part 1)

7 January, 2018

Johannes Kepler loved geometry, so of course he was fascinated by Platonic solids. His early work Mysterium Cosmographicum, written in 1596, includes pictures showing how the 5 Platonic solids correspond to the 5 elements:



Five elements? Yes, besides earth, air, water and fire, he includes a fifth element that doesn’t feel the Earth’s gravitational pull: the ‘quintessence’, or ‘aether’, from which heavenly bodies are made.

In the same book he also tried to use the Platonic solids to explain the orbits of the planets:



The six planets are Mercury, Venus, Earth, Mars, Jupiter and Saturn. And the tetrahedron and cube, in case you’re wondering, sit outside the largest sphere shown above. You can see them another picture from Kepler’s book:

These ideas may seem goofy now, but studying the exact radii of the planets’ orbits led him to discover that these orbits aren’t circular: they’re ellipses! By 1619 this led him to what we call Kepler’s laws of planetary motion. And those, in turn, helped Newton verify Hooke’s hunch that the force of gravity goes as the inverse square of the distance between bodies!

In honor of this, the problem of a particle orbiting in an inverse square force law is called the Kepler problem.

So, I’m happy that Greg Egan, Layra Idarani and I have come across a solid mathematical connection between the Platonic solids and the Kepler problem.

But this involves a detour into the 4th dimension!

It’s a remarkable fact that the Kepler problem has not just the expected conserved quantities—energy and the 3 components of angular momentum—but also 3 more: the components of the Runge–Lenz vector. To understand those extra conserved quantities, go here:

• Greg Egan, The ellipse and the atom.

Noether proved that conserved quantities come from symmetries. Energy comes from time translation symmetry. Angular momentum comes from rotation symmetry. Since the group of rotations in 3 dimensions, called SO(3), is itself 3-dimensional, it gives 3 conserved quantities, which are the 3 components of angular momentum.

None of this is really surprising. But if we take the angular momentum together with the Runge–Lenz vector, we get 6 conserved quantities—and these turn out to come from the group of rotations in 4 dimensions, SO(4), which is itself 6-dimensional. The obvious symmetries in this group just rotate a planet’s elliptical orbit, while the unobvious ones can also squash or stretch it, changing the eccentricity of the orbit.

(To be precise, all this is true only for the ‘bound states’ of the Kepler problem: the circular and elliptical orbits, not the parabolic or hyperbolic ones, which work in a somewhat different way. I’ll only be talking about bound states in this post!)

Why should the Kepler problem have symmetries coming from rotations in 4 dimensions? This is a fascinating puzzle—we know a lot about it, but I doubt the last word has been spoken. For an overview, go here:

• John Baez, Mysteries of the gravitational 2-body problem.

This SO(4) symmetry applies not only to the classical mechanics of the inverse square force law, but also the quantum mechanics! Nobody cares much about the quantum mechanics of two particles attracting gravitationally via an inverse square force law—but people care a lot about the quantum mechanics of hydrogen atoms, where the electron and proton attract each other via their electric field, which also obeys an inverse square force law.

So, let’s talk about hydrogen. And to keep things simple, let’s pretend the proton stays fixed while the electron orbits it. This is a pretty good approximation, and experts will know how to do things exactly right. It requires only a slight correction.

It turns out that wavefunctions for bound states of hydrogen can be reinterpreted as functions on the 3-sphere, S3 The sneaky SO(4) symmetry then becomes obvious: it just rotates this sphere! And the Hamiltonian of the hydrogen atom is closely connected to the Laplacian on the 3-sphere. The Laplacian has eigenspaces of dimensions n2 where n = 1,2,3,…, and these correspond to the eigenspaces of the hydrogen atom Hamiltonian. The number n is called the principal quantum number, and the hydrogen atom’s energy is proportional to -1/n2.

If you don’t know all this jargon, don’t worry! All you need to know is this: if we find an eigenfunction of the Laplacian on the 3-sphere, it will give a state where the hydrogen atom has a definite energy. And if this eigenfunction is invariant under some subgroup of SO(4), so will this state of the hydrogen atom!

The biggest finite subgroup of SO(4) is the rotational symmetry group of the 600-cell, a wonderful 4-dimensional shape with 120 vertices and 600 dodecahedral faces. The rotational symmetry group of this shape has a whopping 7,200 elements! And here is a marvelous moving image, made by Greg Egan, of an eigenfunction of the Laplacian on S3 that’s invariant under this 7,200-element group:


We’re seeing the wavefunction on a moving slice of the 3-sphere, which is a 2-sphere. This wavefunction is actually real-valued. Blue regions are where this function is positive, yellow regions where it’s negative—or maybe the other way around—and black is where it’s almost zero. When the image fades to black, our moving slice is passing through a 2-sphere where the wavefunction is almost zero.

For a full explanation, go here:

• Greg Egan, In the chambers with seven thousand symmetries, 2 January 2018.

Layra Idarani has come up with a complete classification of all eigenfunctions of the Laplacian on S3 that are invariant under this group… or more generally, eigenfunctions of the Laplacian on a sphere of any dimension that are invariant under the even part of any Coxeter group. For the details, go here:

• Layra Idarani, SG-invariant polynomials, 4 January 2018.

All that is a continuation of a story whose beginning is summarized here:

• John Baez, Quantum mechanics and the dodecahedron.

So, there’s a lot of serious math under the hood. But right now I just want to marvel at the fact that we’ve found a wavefunction for the hydrogen atom that not only has a well-defined energy, but is also invariant under this 7,200-element group. This group includes the usual 60 rotational symmetries of a dodecahedron, but also other much less obvious symmetries.

I don’t have a good picture of what these less obvious symmetries do to the wavefunction of a hydrogen atom. I understand them a bit better classically—where, as I said, they squash or stretch an elliptical orbit, changing its eccentricity while not changing its energy.

We can have fun with this using the old quantum theory—the approach to quantum mechanics that Bohr developed with his colleague Sommerfeld from 1920 to 1925, before Schrödinger introduced wavefunctions.

In the old Bohr–Sommerfeld approach to the hydrogen atom, the quantum states with specified energy, total angular momentum and angular momentum about a fixed axis were drawn as elliptical orbits. In this approach, the symmetries that squash or stretch elliptical orbits are a bit easier to visualize:



This picture by Pieter Kuiper shows some orbits at the 5th energy level, n = 5: namely, those with different eigenvalues of the total angular momentum, ℓ.

While the old quantum theory was superseded by the approach using wavefunctions, it’s possible to make it mathematically rigorous for the hydrogen atom. So, we can draw elliptical orbits that rigorously correspond to a basis of wavefunctions for the hydrogen atom. So, I believe we can draw the orbits corresponding to the basis elements whose linear combination gives the wavefunction shown as a function on the 3-sphere in Greg’s picture above!

We should get a bunch of ellipses forming a complicated picture with dodecahedral symmetry. This would make Kepler happy.

As a first step in this direction, Greg drew the collection of orbits that results when we take a circle and apply all the symmetries of the 600-cell:

For more details, read this:

• Greg Egan, Kepler orbits with the symmetries of the 600-cell.

Postscript

To do this really right, one should learn a bit about ‘old quantum theory’. I believe people have been getting it a bit wrong for quite a while—starting with Bohr and Sommerfeld!

If you look at the ℓ = 0 orbit in the picture above, it’s a long skinny ellipse. But I believe it really should be a line segment straight through the proton: that’s what’s an orbit with no angular momentum looks like.

There’s a paper about this:

• Manfred Bucher, Rise and fall of the old quantum theory.

Matt McIrvin had some comments on this:

This paper from 2008 is a kind of thing I really like: an exploration of an old, incomplete theory that takes it further than anyone actually did at the time.

It has to do with the Bohr-Sommerfeld “old quantum theory”, in which electrons followed definite orbits in the atom, but these were quantized–not all orbits were permitted. Bohr managed to derive the hydrogen spectrum by assuming circular orbits, then Sommerfeld did much more by extending the theory to elliptical orbits with various shapes and orientations. But there were some problems that proved maddeningly intractable with this analysis, and it eventually led to the abandonment of the “orbit paradigm” in favor of Heisenberg’s matrix mechanics and Schrödinger’s wave mechanics, what we know as modern quantum theory.

The paper argues that the old quantum theory was abandoned prematurely. Many of the problems Bohr and Sommerfeld had came not from the orbit paradigm per se, but from a much simpler bug in the theory: namely, their rejection of orbits in which the electron moves entirely radially and goes right through the nucleus! Sommerfeld called these orbits “unphysical”, but they actually correspond to the s orbital states in the full quantum theory, with zero angular momentum. And, of course, in the full theory the electron in these states does have some probability of being inside the nucleus.

So Sommerfeld’s orbital angular momenta were always off by one unit. The hydrogen spectrum came out right anyway because of the happy accident of the energy degeneracy of certain orbits in the Coulomb potential.

I guess the states they really should have been rejecting as “unphysical” were Bohr’s circular orbits: no radial motion would correspond to a certain zero radial momentum in the full theory, and we can’t have that for a confined electron because of the uncertainty principle.


Quantum Mechanics and the Dodecahedron

31 December, 2017

This is an expanded version of my G+ post, which was a watered-down version of Greg Egan’s G+ post and the comments on that. I’ll start out slow, and pick up speed as I go.

Quantum mechanics meets the dodecahedron

In quantum mechanics, the position of a particle is not a definite thing: it’s described by a ‘wavefunction’. This says how probable it is to find the particle at any location… but it also contains other information, like how probable it is to find the particle moving at any velocity.

Take a hydrogen atom, and look at the wavefunction of the electron.

Question 1. Can we make the electron’s wavefunction have all the rotational symmetries of a dodecahedron—that wonderful Platonic solid with 12 pentagonal faces?

Yes! In fact it’s too easy: you can make the wavefunction look like whatever you want.

So let’s make the question harder. Like everything else in quantum mechanics, angular momentum can be uncertain. In fact you can never make all 3 components of angular momentum take definite values simultaneously! However, there are lots of wavefunctions where the magnitude of an electron’s angular momentum is completely definite.

This leads naturally to the next question, which was first posed by Gerard Westendorp:

Question 2. Can an electron’s wavefunction have a definite magnitude for its angular momentum while having all the rotational symmetries of a dodecahedron?

Yes! And there are infinitely many ways for this to happen! This is true even if we neglect the radial dependence of the wavefunction—that is, how it depends on the distance from the proton. Henceforth I’ll always do that, which lets us treat the wavefunction as a function on a sphere. And by the way, I’m also ignoring the electron’s spin! So, whenever I say ‘angular momentum’ I mean orbital angular momentum: the part that depends only on the electron’s position and velocity.

Question 2 has a trivial solution that’s too silly to bother with. It’s the spherically symmetric wavefunction! That’s invariant under all rotations. The real challenge is to figure out the simplest nontrivial solution. Egan figured it out, and here’s what it looks like:


The rotation here is just an artistic touch. Really the solution should be just sitting there, or perhaps changing colors while staying the same shape.

In what sense is this the simplest nontrivial solution? Well, the magnitude of the angular momentum is equal to

\hbar^2 \sqrt{\ell(\ell+1)}

where the number \ell is quantized: it can only take values 0, 1, 2, 3,… and so on.

The trivial solution to Question 2 has \ell = 0. The first nontrivial solution has \ell = 6. Why 6? That’s where things get interesting. We can get it using the 6 lines connecting opposite faces of the dodecahedron!

I’ll explain later how this works. For now, let’s move straight on to a harder question:

Question 3. What’s the smallest choice of \ell where we can find two linearly independent wavefunctions that both have the same \ell and both have all the rotational symmetries of a dodecahedron?

It turns out to be \ell = 30. And Egan created an image of a wavefunction oscillating between these two possibilities!

But we can go a lot further:

Question 4. For each \ell, how many linearly independent functions on the sphere have that value of \ell and all the rotational symmetries of a dodecahedron?

For \ell ranging from 0 to 29 there are either none or one. There are none for these numbers:

1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14, 17, 19, 23, 29

and one for these numbers:

0, 6, 10, 12, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28

The pattern continues as follows. For \ell ranging from 30 to 59 there are either one or two. There is one for these numbers:

31, 32, 33, 34, 35, 37, 38, 39, 41, 43, 44, 47, 49, 53, 59

and two for these numbers:

30, 36, 40, 42, 45, 46, 48, 50, 51, 52, 54, 55, 56, 57, 58

The numbers in these two lists are just 30 more than the numbers in the first two lists! And it continues on like this forever: there’s always one more linearly independent solution for \ell + 30 than there is for \ell.

Question 5. What’s special about these numbers from 0 to 29?

0, 6, 10, 12, 15, 18, 20, 21, 22, 24, 25, 26, 27, 28

You don’t need to know tons of math to figure this out—but I guess it’s a sort of weird pattern-recognition puzzle unless you know which patterns are likely to be important here. So I’ll give away the answer.

Here’s the answer: these are the numbers below 30 that can be written as sums of the numbers 6, 10 and 15.

But the real question is why? Also: what’s so special about the number 30?

The short, cryptic answer is this. The dodecahedron has 6 axes connecting the centers of opposite faces, 10 axes connecting opposite vertices, and 15 axes connecting the centers of opposite edges. The least common multiple of these numbers is 30.

But this requires more explanation!

For this, we need more math. You may want to get off here. But first, let me show you the solutions for \ell = 6, \ell = 10, and \ell = 15, as drawn by Greg Egan. I’ve already showed you \ell = 6, which we could call the quantum dodecahedron:


Here is \ell = 10, which looks like a quantum icosahedron:


And here is \ell = 15:

Maybe this deserves to be called a quantum Coxeter complex, since the Coxeter complex for the group of rotations and reflections of the dodecahedron looks like this:



Functions with icosahedral symmetry

The dodecahedron and icosahedron have the same symmetries, but for some reason people talk about the icosahedron when discussing symmetry groups, so let me do that.

So far we’ve been looking at the rotational symmetries of the icosahedron. These form a group called \mathrm{A}_5, or \mathrm{I} for short, with 60 elements. We’ve been looking for certain functions on the sphere that are invariant under the action of this group. To get them all, we’ll first get ahold of all polynomials on \mathbb{R}^3 that are invariant under the action of this group Then we’ll restrict these to the sphere.

To save time, we’ll use the work of Claude Chevalley. He looked at rotation and reflection symmetries of the icosahedron. These form the group \mathrm{I} \times \mathbb{Z}/2, also known as \mathrm{H}_3, but let’s call it \hat{\mathrm{I}} for short. It has 120 elements, but never confuse it with two other groups with 120 elements: the symmetric group on 5 letters, and the binary icosahedral group.

Chevalley found all polynomials on \mathbb{R}^3 that are invariant under the action of this bigger group \hat{\mathrm{I}}. These invariant polynomials form an algebra, and Chevalley showed that this algebra is freely generated by 3 homogeneous polynomials:

P(x,y,z) = x^2 + y^2 + z^2, of degree 2.

Q(x,y,z), of degree 6. To get this we take the dot product of (x,y,z) with each of the 6 vectors joining antipodal vertices of the icosahedron, and multiply them together.

R(x,y,z), of degree 10. To get this we take the dot product of (x,y,z) with each of the 10 vectors joining antipodal face centers of the icosahedron, and multiply them together.

So, linear combinations of products of these give all polynomials on \mathbb{R}^3 invariant under all rotation and reflection symmetries of the icosahedron.

But we want the polynomials that are invariant under just rotational symmetries of the icosahedron! To get all these, we need an extra generator:

S(x,y,z), of degree 15. To get this we take the dot product of (x,y,z) with each of the 15 vectors joining antipodal edge centers of the icosahedron, and multiply them together.

You can check that this is invariant under rotational symmetries of the icosahedron. But unlike our other polynomials, this one is not invariant under reflection symmetries! Because 15 is an odd number, S switches sign under ‘total inversion’—that is, replacing (x,y,z) with -(x,y,z). This is a product of three reflection symmetries of the icosahedron.

Thanks to Egan’s extensive computations, I’m completely convinced that P,Q,R and S generate the algebra of all \mathrm{I}-invariant polynomials on \mathbb{R}^3. I’ll take this as a fact, even though I don’t have a clean, human-readable proof. But someone must have proved it already—do you know where?

Since we now have 4 polynomials on \mathbb{R}^3, they must obey a relation. Egan figured it out:

S^2 = 500 P^9 Q^2 - 2275 P^6 Q^3 + 3440 P^3 Q^4 - 1728 Q^5 + 200 P^7 Q R
- 795 P^4 Q^2 R + 720 P Q^3 R + 4 P^5 R^2 -65 P^2 Q R^2 - R^3

The exact coefficients depend on some normalization factors used in defining Q,R and S. Luckily the details don’t matter much. All we’ll really need is that this relation expresses S^2 in terms of the other generators. And this fact is easy to see without any difficult calculations!

How? Well, we’ve seen S is unchanged by rotations, while it changes sign under total inversion. So, the most any rotation or reflection symmetry of the icosahedron can do to S is change its sign. This means that S^2 is invariant under all these symmetries. So, by Chevalley’s result, it must be a polynomial in P, Q, and R.

So, we now have a nice description of the \mathrm{I}-invariant polynomials on \mathbb{R}^3, in terms of generators and relations. Each of these gives an \mathrm{I}-invariant function on the sphere. And Leo Stein, a postdoc at Caltech who has a great blog on math and physics, has kindly created some images of these.

The polynomial P is spherically symmetric so it’s too boring to draw. The polynomial Q, of degree 6, looks like this when restricted to the sphere:


Since it was made by multiplying linear functions, one for each axis connecting opposite vertices of an icosahedron, it shouldn’t be surprising that we see blue blobs centered at these vertices.

The polynomial R, of degree 10, looks like this:


Here the blue blobs are centered on the icosahedron’s 20 faces.

Finally, here’s S, of degree 15:


This time the blue blobs are centered on the icosahedron’s 30 edges.

Now let’s think a bit about functions on the sphere that arise from polynomials on \mathbb{R}^3. Let’s call them algebraic functions on the sphere. They form an algebra, and it’s just the algebra of polynomials on \mathbb{R}^3 modulo the relation P = 1, since the sphere is the set \{P = 1\}.

It makes no sense to talk about the ‘degree’ of an algebraic function on the sphere, since the relation P = 1 equates polynomials of different degree. What makes sense is the number \ell that I was talking about earlier!

The group \mathrm{SO}(3) acts by rotation on the space of algebraic functions on the sphere, and we can break this space up into irreducible representations of \mathrm{SO}(3). It’s a direct sum of irreps, one of each ‘spin’ \ell = 0, 1, 2, \dots.

So, we can’t talk about the degree of a function on the sphere, but we can talk about its \ell value. On the other hand, it’s very convenient to work with homogeneous polynomials on \mathbb{R}^3, which have a definite degree—and these restrict to functions on the sphere. How can we relate the degree and the quantity \ell?

Here’s one way. The polynomials on \mathbb{R}^3 form a graded algebra. That means it’s a direct sum of vector spaces consisting of homogeneous polynomials of fixed degree, and if we multiply two homogeneous polynomials their degrees add. But the algebra of polynomials restricted to the sphere is merely filtered algebra.

What does this mean? Let F be the algebra of all algebraic functions on the sphere, and let F_\ell \subset F consist of those that are restrictions of polynomials of degree \le \ell. Then:

1) F_\ell \subseteq F_{\ell + 1}

and

2) \displaystyle{ F = \bigcup_{\ell = 0}^\infty F_\ell }

and

3) if we multiply a function in F_\ell by one in F_m, we get one in F_{\ell + m}.

That’s what a filtered algebra amounts to.

But starting from a filtered algebra, we can get a graded algebra! It’s called the associated graded algebra.

To do this, we form

G_\ell = F_\ell / F_{\ell - 1}

and let

\displaystyle{ G = \bigoplus_{\ell = 0}^\infty G_\ell }

Then G has a product where multiplying a guy in G_\ell and one in G_m gives one in G_{\ell + m}. So, it’s indeed a graded algebra! For the details, see Wikipedia, which manages to make it look harder than it is. The basic idea is that we multiply in F and then ‘ignore terms of lower degree’. That’s what G_\ell = F_\ell / F_{\ell - 1} is all about.

Now I want to use two nice facts. First, G_\ell is the spin-\ell representation of \mathrm{SO}(3). Second, there’s a natural map from any filtered algebra to its associated graded algebra, which is an isomorphism of vector spaces (though not of algebras). So, we get an natural isomorphism of vector spaces

\displaystyle{  F \cong G = \bigoplus_{\ell = 0}^\infty G_\ell }

from the algebraic functions on the sphere to the direct sum of all the spin-\ell representations!

Now to the point: because this isomorphism is natural, it commutes with symmetries, so we can also use it to study algebraic functions on the sphere that are invariant under a group of linear transformations of \mathbb{R}^3.

Before tackling the group we’re really interested in, let’s try the group of rotation and reflection symmetries of the icosahedron, \hat{\mathrm{I}}. As I mentioned, Chevalley worked out the algebra of polynomials on \mathbb{R}^3 that are invariant under this bigger group. It’s a graded commutative algebra, and it’s free on three generators: P of degree 2, Q of degree 6, and R of degree 10.

Starting from here, to get the algebra of \hat{\mathrm{I}}-invariant algebraic functions on the sphere, we mod out by the relation P = 1. This gives a filtered algebra which I’ll call F^{\hat{\mathrm{I}}}. (It’s common to use a superscript with the name of a group to indicate that we’re talking about the stuff that’s invariant under some action of that group.) From this we can form the associated graded algebra

\displaystyle{ G^{\hat{\mathrm{I}}} = \bigoplus_{\ell = 0}^\infty G_\ell^{\hat{\mathrm{I}}} }

where

G_\ell^{\hat{\mathrm{I}}} = F_\ell^{\hat{\mathrm{I}}} / F_{\ell - 1}^{\hat{\mathrm{I}}}

If you’ve understood everything I’ve been trying to explain, you’ll see that G_\ell^{\hat{\mathrm{I}}} is the space of all functions on the sphere that transform in the spin-\ell representation and are invariant under the rotation and reflection symmetries of the icosahedron.

But now for the fun part: what is this space like? By the work of Chevalley, the algebra F^{\hat{\mathrm{I}}} is spanned by products

P^p Q^q R^r

but since we have the relation P = 1, and no other relations, it has a basis given by products

Q^q R^r

So, the space F_\ell^{\hat{\mathrm{I}}} has a basis of products like this whose degree is \le \ell, meaning

6 q + 10 r \le \ell

Thus, the space we’re really interested in:

G_\ell^{\hat{\mathrm{I}}} = F_\ell^{\hat{\mathrm{I}}} / F_{\ell - 1}^{\hat{\mathrm{I}}}

has a basis consisting of equivalence classes

[Q^q R^r]

where

6 q + 10 r = \ell

So, we get:

Theorem 1. The dimension of the space of functions on the sphere that lie in the spin-\ell representation of \mathrm{SO}(3) and are invariant under the rotation and reflection symmetries of the icosahedron equals the number of ways of writing \ell as an unordered sum of 6’s and 10’s.

Let’s see how this goes:

\ell = 0: dimension 1, with basis [1]

\ell = 1: dimension 0

\ell = 2: dimension 0

\ell = 3: dimension 0

\ell = 4: dimension 0

\ell = 5: dimension 0

\ell = 6: dimension 1, with basis [Q]

\ell = 7: dimension 0

\ell = 8: dimension 0

\ell = 9: dimension 0

\ell = 10: dimension 1, with basis [R]

\ell = 11: dimension 0

\ell = 12: dimension 1, with basis [Q^2]

\ell = 13: dimension 0

\ell = 14: dimension 0

\ell = 15: dimension 0

\ell = 16: dimension 1, with basis [Q R]

\ell = 17: dimension 0

\ell = 18: dimension 1, with basis [Q^3]

\ell = 19: dimension 0

\ell = 20: dimension 1, with basis [R^2]

\ell = 21: dimension 0

\ell = 22: dimension 1, with basis [Q^2 R]

\ell = 23: dimension 0

\ell = 24: dimension 1, with basis [Q^4]

\ell = 25: dimension 0

\ell = 26: dimension 1, with basis [Q R^2]

\ell = 27: dimension 0

\ell = 28: dimension 1, with basis [Q^3 R]

\ell = 29: dimension 0

\ell = 30: dimension 2, with basis [Q^5], [R^3]

So, the story starts out boring, with long gaps. The odd numbers are completely uninvolved. But it heats up near the end, and reaches a thrilling climax at \ell = 30. At this point we get two linearly independent solutions, because 30 is the least common multiple of the degrees of Q and R.

It’s easy to see that from here on the story ‘repeats’ with period 30, with the dimension growing by 1 each time:

\mathrm{dim}(G_{\ell+30}^{\hat{\mathrm{I}}}) = \mathrm{dim}(G_{\ell}^{\hat{\mathrm{I}}}) + 1

Now, finally, we are to tackle Question 4 from the first part of this post: for each \ell, how many linearly independent functions on the sphere have that value of \ell and all the rotational symmetries of a dodecahedron?

We just need to repeat our analysis with \mathrm{I}, the group of rotational symmetries of the dodecahedron, replacing the bigger group \hat{\mathrm{I}}.

We start with algebra of polynomials on \mathbb{R}^3 that are invariant under \mathrm{I}. As we’ve seen, this is a graded commutative algebra with four generators: P,Q,R as before, but also S of degree 15. To make up for this extra generator there’s an extra relation, which expresses S^2 in terms of the other generators.

Starting from here, to get the algebra of \mathrm{I}-invariant algebraic functions on the sphere, we mod out by the relation P = 1. This gives a filtered algebra I’ll call F^{\mathrm{I}}. Then we form the associated graded algebra

\displaystyle{ G^{\mathrm{I}} = \bigoplus_{\ell = 0}^\infty G_\ell^{\mathrm{I}} }

where

G_\ell^{\mathrm{I}} = F_\ell^{\mathrm{I}} / F_{\ell - 1}^{\mathrm{I}}

What we really want to know is the dimension of G_\ell^{\mathrm{I}}, since this is the space of functions on the sphere that transform in the spin-\ell representation and are invariant under the rotational symmetries of the icosahedron.

So, what’s this space like? The algebra F^{\mathrm{I}} is spanned by products

P^p Q^q R^r S^t

but since we have the relation P = 1, and a relation expressing S^2 in terms of other generators, it has a basis given by products

Q^q R^r S^s where s = 0, 1

So, the space F_\ell^{\mathrm{I}} has a basis of products like this whose degree is \le \ell, meaning

6 q + 10 r + 15 s \le \ell and s = 0, 1

Thus, the space we’re really interested in:

G_\ell^{\mathrm{I}} = F_\ell^{\mathrm{I}} / F_{\ell - 1}^{\mathrm{I}}

has a basis consisting of equivalence classes

[Q^q R^r S^s]

where

6 q + 10 r + 15 s = \ell and s = 0, 1

So, we get:

Theorem 2. The dimension of the space of functions on the sphere that lie in the spin-\ell representation of \mathrm{SO}(3) and are invariant under the rotational symmetries of the icosahedron equals the number of ways of writing \ell as an unordered sum of 6’s, 10’s and at most one 15.

Let’s work out these dimensions explicitly, and see how the extra generator S changes the story! Since it has degree 15, it contributes some solutions for odd values of \ell. But when we reach the magic number 30, this extra generator loses its power: S^2 has degree 30, but it’s a linear combination of other things.

\ell = 0: dimension 1, with basis [1]

\ell = 1: dimension 0

\ell = 2: dimension 0

\ell = 3: dimension 0

\ell = 4: dimension 0

\ell = 5: dimension 0

\ell = 6: dimension 1, with basis [Q]

\ell = 7: dimension 0

\ell = 8: dimension 0

\ell = 9: dimension 0

\ell = 10: dimension 1, with basis [R]

\ell = 11: dimension 0

\ell = 12: dimension 1, with basis [Q^2]

\ell = 13: dimension 0

\ell = 14: dimension 0

\ell = 15: dimension 1, with basis [S]

\ell = 16: dimension 1, with basis [Q R]

\ell = 17: dimension 0

\ell = 18: dimension 1, with basis [Q^3]

\ell = 19: dimension 0

\ell = 20: dimension 1, with basis [R^2]

\ell = 21: dimension 1, with basis [Q S]

\ell = 22: dimension 1, with basis [Q^2 R]

\ell = 23: dimension 0

\ell = 24: dimension 1, with basis [Q^4]

\ell = 25: dimension 1, with basis [R S]

\ell = 26: dimension 1, with basis [Q R^2]

\ell = 27: dimension 1, with basis [Q^2 S]

\ell = 28: dimension 1, with basis [Q^3 R]

\ell = 29: dimension 0

\ell = 30: dimension 2, with basis [Q^5], [R^3]

From here on the story ‘repeats’ with period 30, with the dimension growing by 1 each time:

\mathrm{dim}(G_{\ell+30}^{\mathrm{I}}) = \mathrm{dim}(G_{\ell}^{\mathrm{I}}) + 1

So, we’ve more or less proved everything that I claimed in the first part. So we’re done!

Postscript

But I can’t resist saying a bit more.

First, there’s a very different and somewhat easier way to compute the dimensions in Theorems 1 and 2. It uses the theory of characters, and Egan explained it in a comment on the blog post on which this is based.

Second, if you look in these comments, you’ll also see a lot of material about harmonic polynomials on \mathbb{R}^3—that is, those obeying the Laplace equation. These polynomials are very nice when you’re trying to decompose the space of functions on the sphere into irreps of \mathrm{SO}(3). The reason is that the harmonic homogeneous polynomials of degree \ell, when restricted to the sphere, give you exactly the spin-\ell representation!

If you take all homogeneous polynomials of degree \ell and restrict them to the sphere you get a lot of ‘redundant junk’. You get the spin-\ell rep, plus the spin-(\ell-2) rep, plus the spin-(\ell-4) rep, and so on. The reason is the polynomial

P = x^2 + y^2 + z^2

and its powers: if you have a polynomial living in the spin-\ell rep and you multiply it by P, you get another one living in the spin-\ell rep, but you’ve boosted the degree by 2.

Layra Idarani pointed out that this is part of a nice general theory. But I found all this stuff slightly distracting when I was trying to prove Theorems 1 and 2 assuming that we had explicit presentations of the algebras of \hat{\mathrm{I}}– and \mathrm{I}-invariant polynomials on \mathbb{R}^3. So, instead of introducing facts about harmonic polynomials, I decided to use the ‘associated graded algebra’ trick. This is a more algebraic way to ‘eliminate the redundant junk’ in the algebra of polynomials and chop the space of functions on the sphere into irreps of \mathrm{SO}(3).

Also, Egan and Idarani went ahead and considered what happens when we replace the icosahedron by another Platonic solid. It’s enough to consider the cube and tetrahedron. These cases are actually subtler than the icosahedron! For example, when we take the dot product of (x,y,z) with each of the 10 vectors joining antipodal face centers of the cube, and multiply them together, we get a polynomial that’s not invariant under rotations of the cube! Up to a constant it’s just x y z, and this changes sign under some rotations.

People call this sort of quantity, which gets multiplied by a number under transformations instead of staying the same, a semi-invariant. The reason we run into semi-invariants for the cube and tetrahedron is that their rotational symmetry groups, \mathrm{S}_4 and \mathrm{A}_4, have nontrivial abelianizations, namely \mathbb{Z}/2 and \mathbb{Z}/3. The abelianization of \mathrm{I} \cong \mathrm{A}_5 is trivial.

Egan summarized the story as follows:

Just to sum things up for the cube and the tetrahedron, since the good stuff has ended up scattered over many comments:

For the cube, we define:

A of degree 4 from the cube’s vertex-axes, a full invariant
B of degree 6 from the cube’s edge-centre-axes, a semi-invariant
C of degree 3 from the cube’s face-centre-axes, a semi-invariant

We have full invariants:

A of degree 4
C2 of degree 6
BC of degree 9

B2 can be expressed in terms of A, C and P, so we never use it, and we use BC at most once.

So the number of copies of the trivial rep of the rotational symmetry group of the cube in spin ℓ is the number of ways to write ℓ as an unordered sum of 4, 6 and at most one 9.

For the tetrahedron, we embed its vertices as four vertices of the cube. We then define:

V of degree 4 from the tet’s vertices, a full invariant
E of degree 3 from the tet’s edge-centre axes, a full invariant

And the B we defined for the embedding cube serves as a full invariant of the tet, of degree 6.

B2 can be expressed in terms of V, E and P, so we use B at most once.

So the number of copies of the trivial rep of the rotational symmetry group of the tetrahedron in spin ℓ is the number of ways to write ℓ as a sum of 3, 4 and at most one 6.

All of this stuff reminds me of a baby version of the theory of modular forms. For example, the algebra of modular forms is graded by ‘weight’, and it’s the free commutative algebra on a guy of weight 4 and a guy of weight 6. So, the dimension of the space of modular forms of weight k is the number of ways of writing k as an unordered sum of 4’s and 6’s. Since the least common multiple of 4 and 6 is 12, we get a pattern that ‘repeats’, in a certain sense, mod 12. Here I’m talking about the simplest sort of modular forms, based on the group \mathrm{SL}_2(\mathbb{Z}). But there are lots of variants, and I have the feeling that this post is secretly about some sort of variant based on finite subgroups of \mathrm{SL}(2,\mathbb{C}) instead of infinite discrete subgroups.

There’s a lot more to say about all this, but I have to stop or I’ll never stop. Please ask questions and if you want me to say more!


The 600-Cell (Part 3)

28 December, 2017

There are still a few more things I want to say about the 600-cell. Last time I described the ‘compound of five 24-cells’. David Richter built a model of this, projected from 4 dimensions down to 3:



It’s nearly impossible to tell from this picture, but it’s five 24-cells inscribed in the 600-cell, with each vertex of the 600-cell being the vertex of just one of these five 24-cells. The trick for constructing it is to notice that the vertices of the 600-cell form a group sitting in the sphere of unit quaternions, and to find a 24-cell whose vertices form a subgroup.

The left cosets of a subgroup H \subset G are the sets

gH = \{gh : \; h \in H\}

They look like copies of H ‘translated’, or in our case ‘rotated’, inside G. Every point of G lies in exactly one coset.

In our example there are five cosets. Each is the set of vertices of a 24-cell inscribed in the 600-cell. Every vertex of the 600-cell lies in exactly one of these cosets. This gives our ‘compound of five 24-cells’.

It turns out this trick is part of a family of three tricks, each of which gives a nice compound of 4d regular polytopes. While I’ve been avoiding coordinates, I think they’ll help get the idea across now. Here’s a nice description of the 120 vertices of the 600-cell. We take these points:

\displaystyle{ (\pm \textstyle{\frac{1}{2}}, \pm \textstyle{\frac{1}{2}},\pm \textstyle{\frac{1}{2}},\pm \textstyle{\frac{1}{2}}) }

\displaystyle{ (\pm 1, 0, 0, 0) }

\displaystyle{ \textstyle{\frac{1}{2}} (\pm \Phi, \pm 1 , \pm 1/\Phi, 0 )}

and all those obtained by even permutations of the coordinates. So, we get

2^4 = 16

points of the first kind,

2 \times 4 = 8

points of the second kind, and

2^3 \times 4! / 2 = 96

points of the third kind, for a total of

16 + 8 + 96 = 120

points.

The 16 points of the first kind are the vertices of a 4-dimensional hypercube, the 4d analogue of a cube:



The 8 points of the second kind are the vertices of a 4-dimensional orthoplex, the 4d analogue of an octahedron:



The hypercube and orthoplex are dual to each other. Taking both their vertices together we get the 16 + 8 = 24 vertices of the 24-cell, which is self-dual:



The hypercube, orthoplex and 24-cell are regular polytopes, as is the 600-cell.

Now let’s think of any point in 4-dimensional space as a quaternion:

(a,b,c,d) = a + b i + c j + d k

If we do this, we can check that the 120 vertices of the 600-cell form a group under quaternion multiplication. As mentioned in Part 1, this group is called the binary icosahedral group or 2\mathrm{I}, because it’s a double cover of the rotational symmetry group of an icosahedron (or dodecahedron).

We can also check that the 24 vertices of the 24-cell form a group under quaternion multiplication. As mentioned in Part 1, this is called the binary tetrahedral group or 2\mathrm{T}, because it’s a double cover of the rotational symmetry group of a tetrahedron.

All this is old news. But it’s even easier to check that the 8 vertices of the orthoplex form a group under quaternion multiplication: they’re just

\pm 1, \pm i, \pm i, \pm k

This group is often called the quaternion group or \mathrm{Q}. It too is a double cover of a group of rotations! The 180° rotations about the x, y and z axes square to 1 and commute with each other; up in the double cover of the rotation group (the unit quaternions, or \mathrm{SU}(2)) they give elements that square to -1 and anticommute with each other.

Furthermore, the 180° rotations about the x, y and z axes are symmetries of a regular tetrahedron! This is easiest to visualize if you inscribe the tetrahedron in a cube thus:


So, up in the double cover of the 3d rotation group we get a chain of subgroups

\mathrm{Q} \subset 2\mathrm{T} \subset 2\mathrm{I}

which explains why we’re seeing an orthoplex inscribed in a 24-cell inscribed in a 600-cell! This explanation is more satisfying to me than the one involving coordinates.

Alas, I don’t see how to understand the hypercube inscribed in the 24-cell in quite this way, since the hypercube is not a subgroup of the unit quaternions. It certainly wasn’t in the coordinates I gave before—but worse, there’s no way to rotate the hypercube so that it becomes a subgroup. There must be something interesting to say here, but I don’t know it. So, I’ll forget the hypercube for now.

Instead, I’ll use group theory to do something nice with the orthoplex.

First, look at the orthoplexes sitting inside the 24-cell! We’ve got 8-element subgroup of a 24-element group:

\mathrm{Q} \subset 2\mathrm{T}

so it has three right cosets, each forming the vertices of an orthoplex inscribed in the 24-cell. So, we get compound of three orthoplexes: a way of partitioning the vertices of the 24-cell into those of three orthoplexes.

Second, look at the orthoplexes sitting inside the 600-cell! We’ve got 8-element subgroup of a 120-element group:

\mathrm{Q} \subset 2\mathrm{I}

so it has 15 right cosets, each forming the vertices of an orthoplex inscribed in the 600-cell. So, we get a compound of 15 orthoplexes: a way of partitioning the vertices of the 600-cell into those of 15 orthoplexes.

And third, these fit nicely with what we saw last time: the 24-cells sitting inside the 600-cell! We saw a 24-element subgroup of a 120-element group

2\mathrm{T} \subset 2\mathrm{I}

so it has 5 right cosets, each forming the vertices of a 24-cell inscribed in the 600-cell. That gave us the compound of five 24-cells: a way of partitioning the vertices of the 600-cell into those of five 24-cells.

There are some nontrivial counting problems associated with each of these three compounds. David Roberson has already solved most of these.

1) How many ways are there of inscribing an orthoplex in a 24-cell?

2) How many ways are there of inscribing a compound of three orthoplexes in a 24-cell?

3) How many ways are there of inscribing an orthoplex in a 600-cell? David used a computer to show there are 75. Is there a nice human-understandable argument?

4) How many ways are there of inscribing a compound of 15 orthoplexes in a 600-cell? David used a computer to show there are 280. Is there a nice human-understandable argument?

5) How many ways are there of inscribing a 24-cell in a 600-cell? David used a computer to show there are 25. Is there a nice human-understandable argument?

4) How many ways are there of inscribing a compound of five 24-cells in a 600-cell? David used a computer to show there are 10. Is there a nice human-understandable argument? (It’s pretty easy to prove that 10 is a lower bound.)

For those who prefer visual delights to math puzzles, here is a model of the compound of 15 orthoplexes, cleverly projected from 4 dimensions down to 3, made by David Richter and some friends:



It took four people 6 hours to make this! Click on the image to learn more about this amazing shape, and explore David Richter’s pages to see more compounds.

So far my tale has not encompassed the 120-cell, which is the dual of the 600-cell. This has 600 vertices and 120 dodecahedral faces:



Unfortunately, like the hypercube, the vertices of the 120-cell cannot be made into a subgroup of the unit quaternions. I’ll need some other idea to think about them in a way that I enjoy. But the 120-cell is amazing because every regular polytope in 4 dimensions can be inscribed in the 120-cell.

For example, we can inscribe the orthoplex in the 120-cell. Since the orthoplex has 8 vertices while the 120-cell has 600, and

600/8 = 75

we might hope for a compound of 75 orthoplexes whose vertices, taken together, are those of the 120-cell. And indeed it exists… and David Richter and his friends have built a model!

Image credits

You can click on any image to see its source. The photographs of models of the compound of five 24-cells and the compound of 15 orthoplexes are due to David Richter and friends. The shiny ball-and-strut pictures of the tetrahedron in the cube and the 120-cells were made by Tom Ruen using Robert Webb’s Stella software and placed on Wikicommons. The 2d projections of the hypercube, orthoplex and 24-cell were made by Tom Ruen and placed into the public domain on Wikicommons.


The 600-Cell (Part 2)

24 December, 2017

This is a compound of five tetrahedra:



It looks like a scary, almost random way of slapping together 5 regular tetrahedra until you realize what’s going on. A regular dodecahedron has 20 vertices, while a regular tetrahedron has 4. Since 20 = 4 × 5, you can try to partition the dodecahedron’s vertices into the vertices of five tetrahedra. And it works!



The result is the compound of five tetrahedra. It comes in in two mirror-image forms.

I want to tell you about a 4-dimensional version of the same thing. Amazingly, the 4-dimensional version arises from studying the symmetries of the 3-dimensional thing you see above! The symmetries of the tetrahedron gives a 4-dimensional regular polytope called the ’24-cell’, while the symmetries of the dodecahedron give one called the ‘600-cell’. And there’s a way of partitioning the vertices of the 600-cell into 5 sets, each being the vertices of a 24-cell! So, we get a ‘compound of five 24-cells’.

To see how this works, we need to think about symmetries.

Any rotational symmetry of the dodecahedron acts to permute the tetrahedra in our compound of five tetrahedra. We can only get even permutations this way, but we can get any even permutation. Furthermore, knowing this permutation, we can tell what rotation we did. So, by the marvel of mathematical reasoning, the rotational symmetry group of the dodecahedron must be the alternating group \mathrm{A}_5.

On the other hand, the rotational symmetry group of the tetrahedron is \mathrm{A}_4, since any rotation gives an even permutation of the 4 vertices of the tetrahedron.

If we pick any tetrahedron in our compound of five tetrahedra, its rotational symmetries give rotational symmetries of the dodecahedron. So, these symmetries form a subgroup of \mathrm{A}_5 that is isomorphic to \mathrm{A}_4. There are exactly 5 such subgroups—one for each tetrahedron.

So, to the eyes of a group theorist, the tetrahedra in our compound of five tetrahedra are just the \mathrm{A}_4 subgroups of \mathrm{A}_5. \mathrm{A}_5 acts on itself by conjugation, and this action permutes these 5 subgroups. Indeed, it acts to give all the even permutations—after all, it’s \mathrm{A}_5.

So, the compound of five tetrahedra has dissolved into group theory, with each figure becoming a group, and the big group acting to permute its own subgroups!

All this is just the start of a longer story about compounds of Platonic solids:

Dodecahedron with 5 tetrahedra, Visual Insight, 15 May 2015.

But only recently did I notice how this story generalizes to four dimensions. Just as we can inscribe a compound of five tetrahedra in the dodecahedron, we can inscribe a compound of five 24-cells in a 600-cell!

Here’s how it goes.

The rotational symmetry group of a tetrahedron is contained in the group of rotations in 3d space:

\mathrm{A}_4 \subset \mathrm{SO}(3)

so it has a double cover, the binary tetrahedral group

2\mathrm{T} \subset \mathrm{SU}(2)

and since we can see \mathrm{SU}(2) as the unit quaternions, the elements of the binary tetrahedral group are the vertices of a 4d polytope! This polytope obviously has 24 vertices, twice the number of elements in \mathrm{A}_4—but less obviously, it also has 24 octahedral faces, so it’s called the 24-cell:



Similarly, the rotational symmetry group of a dodecahedron is contained in the group of rotations in 3d space:

\mathrm{A}_5 \subset \mathrm{SO}(3)

so it has a double cover, usually called the binary icosahedral group

2\mathrm{I} \subset \mathrm{SU}(2)

and since we can see \mathrm{SU}(2) as the unit quaternions, the elements of the binary icosahedral group are the vertices of a 4d polytope! This polytope obviously has 120 vertices, twice the number of elements in \mathrm{A}_5—but less obviously, it has 600 tetrahedral faces, so it’s called the 600-cell:



Each way of making \mathrm{A}_4 into a subgroup of \mathrm{A}_5 gives a way of making the binary tetrahedral group 2\mathrm{T} into a subgroup of the binary dodecahedral group 2\mathrm{I}… and thus a way of inscribing the 24-cell in the 600-cell!

Next, since 120 = 24 × 5, you can try to partition the 600-cell’s vertices into the vertices of five 24-cells. And it works!

And it’s easy: just take a 2\mathrm{T} subgroup of 2\mathrm{I}, and consider the cosets of this subgroup. Each coset gives the vertices of a 24-cell inscribed in the 600-cell, and there are 5 of these cosets, all disjoint.

So, we get a compound of five 24-cells, whose vertices are those of the 600-cell.

This leads to another question: how many ways can we fit a compound of five 24-cells into a 600-cell?

The answer is 10. It’s easy to get ahold of 10, so the hard part is proving there are no more. Coxeter claims it’s true in the footnote in Section 14.3 of his Regular Polytopes, in which he apologizes for criticizing someone else who earlier claimed it was true:

Thus Schoute (6, p. 231) was right when he said the 120 vertices of {3,5,3} belong to five {3,4,3}’s in ten different ways. The disparaging remark in the second footnote to Coxeter 4, p. 337, should be deleted.

I believe neither of these references has a proof! David Roberson has verified it using Sage, as explained in his comment on a previous post. But it would still be nice to find a human-readable proof.

To see why there are at least 10 ways to stick a compound of five 24-cells in the 600-cell, go here:

• John Baez, How many ways can you inscribe five 24-cells in a 600-cell, hitting all its vertices?, MathOverflow, 15 December 2017.

Puzzle. Are five of these ways mirror-image versions of the other five?

Image credits

You can click on any image to see its source. The first image of the compound of five tetrahedra was made using Robert Webb’s Stella software and placed on Wikicommons. The rotating compound of five tetrahedra in a dodecahedron was made by Greg Egan and donated to my blog Visual Insight. The rotating 24-cell and 600-cell were made by Jason Hise and put into the public domain on Wikicommons.


The 600-Cell (Part 1)

16 December, 2017

I can’t stop thinking about the 600-cell:

It’s a ‘Platonic solid in 4 dimensions’ with 600 tetrahedral faces and 120 vertices. One reason I like it is that you can think of these vertices as forming a group: a double cover of the rotational symmetry group of the icosahedron. Another reason is that it’s a halfway house between the icosahedron and the \mathrm{E}_8 lattice. I explained all this in my last post here:

From the icosahedron to E8.

I wrote that post as a spinoff of an article I was writing for the Newsletter of the London Mathematical Society, which had a deadline attached to it. Now I should be writing something else, for another deadline. But somehow deadlines strongly demotivate me—they make me want to do anything else. So I’ve been continuing to think about the 600-cell. I posed some puzzles about it in the comments to my last post, and they led me to some interesting thoughts, which I feel like explaining. But they’re not quite solidified, so right now I just want to give a fairly concrete picture of the 600-cell, or at least its vertices.

This will be a much less demanding post than the last one—and correspondingly less rewarding. Remember the basic idea:

Points in the 3-sphere can be seen as quaternions of norm 1, and these form a group \mathrm{SU}(2) that double covers \mathrm{SO}(3). The vertices of the 600-cell are the points of a subgroup \Gamma \subset \mathrm{SU}(2) that double covers the rotational symmetry group of the icosahedron. This group \Gamma is the famous binary icosahedral group.

Thus, we can name the vertices of the 600-cell by rotations of the icosahedron—as long as we remember to distinguish between a rotation by \theta and a rotation by \theta + 2\pi. Let’s do it!

• 0° (1 of these). We can take the identity rotation as our chosen ‘favorite’ vertex of the 600-cell.

• 72° (12 of these). The nearest neighbors of our chosen vertex correspond to the rotations by the smallest angles that are symmetries of the icosahedron; these correspond to taking any of its 12 vertices and giving it a 1/5 turn clockwise.

• 120° (20 of these). The next nearest neighbors correspond to taking one of the 20 faces of the icosahedron and giving it a 1/3 turn clockwise.

• 144° (12 of these). These correspond to taking one of the vertices of the icosahedron and giving it a 2/5 turn clockwise.

• 180° (30 of these). These correspond to taking one of the edges and giving it a 1/2 turn clockwise. (Note that since we’re working in the double cover \mathrm{SU(2)} rather than \mathrm{SO}(3), giving one edge a half turn clockwise counts as different than giving the opposite edge a half turn clockwise.)

• 216° (12 of these). These correspond to taking one of the vertices of the icosahedron and giving it a 3/5 turn clockwise. (Again, this counts as different than rotating the opposite vertex by a 2/5 turn clockwise.)

• 240° (20 of these). These correspond to taking one of the faces of the icosahedron and giving it a 2/3 turn clockwise. (Again, this counts as different than rotating the opposite vertex by a 1/3 turn clockwise.)

• 288° (12 of these). These correspond to taking any of the vertices and giving it a 4/5 turn clockwise.

• 360° (1 of these). This corresponds to a full turn in any direction.

Let’s check:

1 + 12 + 20 + 12 + 30 + 12 + 20 + 12 + 1 = 120

Good! We need a total of 120 vertices.

This calculation also shows that if we move a hyperplane through the 3-sphere, which hits our favorite vertex the moment it touches the 3-sphere, it will give the following slices of the 600-cell:

• Slice 1: a point (our favorite vertex),

• Slice 2: an icosahedron (whose vertices are the 12 nearest neighbors of our favorite vertex),

• Slice 3: a dodecahedron (whose vertices are the 20 next-nearest neighbors),

• Slice 4: an icosahedron (the 12 third-nearest neighbors),

• Slice 5: an icosidodecahedron (the 30 fourth-nearest neighbors),

• Slice 6: an icosahedron (the 12 fifth-nearest neighbors),

• Slice 7: a dodecahedron (the 20 sixth-nearest neighbors),

• Slice 8: an icosahedron (the 12 seventh-nearest neighbors),

• Slice 9: a point (the vertex opposite our favorite).

Here’s a picture drawn by J. Gregory Moxness, illustrating this:

Note that there are 9 slices. Each corresponds to a different conjugacy class in the group \Gamma. These in turn correspond to the dots in the extended Dynkin diagram of \mathrm{E}_8, which has the usual 8 dots and one more.

The usual \mathrm{E}_8 Dynkin diagram has ‘legs’ of lengths 5, 2 and 3:

The three legs correspond to conjugacy classes in \Gamma that map to rotational symmetries of an icosahedron that preserve a vertex (5 conjugacy classes), an edge (2 conjugacy classes), and a (3 conjugacy classes)… not counting the element -1 \in \Gamma. That last element gives the extra dot in the extended Dynkin diagram.

Image credits

You can click on an image to see its source. The shiny ball-and-strut picture of the 120-cell was made by Tom Ruen using Robert Webb’s Stella software and placed on Wikicommons. The picture of slices of the 120-cell was drawn by J. Gregory Moxness and placed on Wikicommons under a Creative Commons Attribution-Share Alike 4.0 International license.