# Test

Groups are one of the most fundamental objects in mathematics. They arise everywhere, from snowflakes to particle physics. Most guides to groups start by considering them as a very abstract theoretical idea. This guide is different – we will start with a very concrete example, and consider being more abstract later.

This guide is also designed for people interested in computing with groups – we are going to introduce code early, and by the end of this guide you will know how the implement state of the art algorithms for many important problems on groups.

Many of the examples we use in this guide are going to be based on games and puzzles. Let’s begin with our first example!

This puzzle consists of six balls placed in two circles. The two circles can spin independantly. Here is a simple interactive version of our game!

Consider all the lists of moves we can perform in this game – we will show these are a group, and explain what a group is. A collection of moves are a if they satisfy three conditions. Actually, there are a few different, equivalent, ways of writing what a group is, we will give one here, and then discuss some others later.

**Binary Operation:**A group is in general a ‘binary operation’. This just means we can take two moves \(a\) and \(b\), and make a new move \(a.b\), by doing \(a\) then \(b\). For example, we can make a move by doing**Rotate Left**followed by**Rotate Right**. We require that any series of moves makes another move.**Inverse element:**For every move, there should be an inverse of that move that gets you back to where you started. For example, you can*invert***Rotate Left**, by doing**Rotate Left 3 times**.**Identity element:**This is paired together with**Inverse**, there must be a ‘move’, which we call the identity element, which doesn’t do anything.