When you think about pure maths, you’ll think about pages filled with definitions and theorems becoming increasingly abstract. What you probably won’t think about is programming. The use of programming in applied maths is obvious but it can be difficult to imagine how programming can be used with some abstract theorem. What I’ve learnt throughout this project is that programming does have a place in pure maths. Implementing an abstract theorem in a program will help you learn more about it and also allows you to create new examples and help other people understand it.
When you think of pure maths what springs to mind? Is it a whiteboard filled with symbols that few people understand? Perhaps it’s a textbook filled with page after page of definitions and theorems that become increasingly more abstract? Or maybe, it’s a two hour lecture where the lecturer destroys every bit of intuition you had about the real numbers?
What you’re probably not thinking of is programming. Surely programming doesn’t exist in pure maths. Surely programming is only used by applied mathematicians with their seemingly endless array of differential equations that need solving.
When I asked my supervisor, Stephan Tornier, about potential projects for the AMSI VRS he came up with the idea to write a GAP package implementing local action diagrams. Local action diagrams were a recent development by a colleague of his and they can be used to describe certain kinds of groups acting on trees. They fit right into pure maths.
Stephan had the idea for this project because very few computations using local action diagrams had been performed. He believes that while it’s great to have pages of definitions, theorems, and proofs, it’s also a good idea to do computations where you can. And after working on this project over the summer, I agree with him.
There are two areas where I found computations to be helpful. The first is enumerating objects. When you’re working with a new object, one of the first things you may want to know is how many of them there are. It can be quite difficult to create a theorem from scratch that counts them in general. This is where computers come in. If you can represent these objects in a computer, you can enumerate them — at least for small enough cases. These programs can give you an idea of how to start counting these objects in general and if you’re lucky enough there’ll already be a sequence on the OEIS that matches up.
The second area where I found computations helpful was creating examples. When you come across a new concept, it’s often easier to understand with a few examples. But what do you do when there are no examples for you to follow? Programming comes to the rescue. If you can program a mathematical object or definition you can create as many examples as your heart desires. Throughout this project, my understanding of a definition or theorem was greatly improved after programming it as a function and creating a few examples from that. Stephan even told me that part of the reason for turning this work into a package was so that if somebody in the future wants to learn about local action diagrams they’ll have the package to help them.
So don’t think programming is only for applied mathematicians needing to solve a differential equation. Programming has its place in pure mathematics (even if in some languages you must deal with arrays incorrectly starting at one.)
Marcus Chijoff
The University of Newcastle