A Chess move doesn't permute the source and target place. It's more like a vector from the start to the end point. The location of a Chess piece could then be interpreted as a vector starting from an arbitrary origin accompanied by a moved-along local coordinate system (frame).
Let's look at a graph with plenty of holes (Figure 11.1, “Holonomy”).
The treatment must fulfill the following criteria:
we want a group, so an inverse must always exist, that's why we can't simply fix things at a boundary (we want a regular parametrization)
the group definition forbids irreversible behavior: no forgetting about initial values without periodicity
the result can be mapped (by an epimorphism) to ordinary Chess piece movement (with space-time metric) and some intuitively understood physical 'reflection' at a boundary (with incidence angle and so on)
aesthetical results (that is to say symmetry)
It is said that (2-)manifolds are looking locally like vector spaces. The idea now is to construct s.th. globally closed under addition, with associative law, identity and inverses, but non-Abelian in the general case. Well, it seems this is not completely new and called noncommutative geometry or orbifolds nowadays? For now let's name our groups 'vector' groups using apostrophes to indicate non-commutativity. They are analogs to Lie groups. Another approach could be homotopy groups, modules, vector bundles, fibres, loop-spaces, geometric groups, quivers, Lie transport or the group of parallel transport ('holonomy group') and spinors. Or you could say it's in the spirit of normalization of (singular) algebraic curves, and the walks get a holomorphic embedding onto a surface. Well, it's all quite the same for that matter.
The moves are put into equivalence classes (reflexive, symmetric, transitive), and then we only deal with representatives for each class. One 'vector' stands for many concrete moves later on. The rule is to move the second summand along some coordinate lines (the 'vector's direction or somehow perpendicular), until its start meets the line constructed by first summands' orientation (don't do this in case the start point is already on such a line); and then a movement along this line upto the first summands end point preserving the relative orientation. The newly formed longer vectors must be checked, how they behave in addition (from left and right). They can be moved along by starting with their first parts (relying on associative law) successively. We identify 'vector's in case they can be moved onto one another.
Inner boundary lines (or should we call them connectivity components) are good candidates for coordinate lines representing a somewhat appropriate system where 'things could perhaps neatly separate' (btw. pay attention to the fact that they have an orientation, depending on their inner or outer placement). Coordinate lines may have some local orbits in common (degenerate situation).
For the moment let's work with only two generators (later on we'll see that poly*2 many could look more natural but are not needed). As an example an m × n torus get's relations an = bm = [a,b] = 1 and a composition like Z(m) × Z(n). A square board with boundary, let's say 5 × 6 Chess board, does not look the same as some torus board without boundary. Instead involving four 2-gons (can be realized with non-straight edges) we get s.th. having genus 0.
One might guess that loops could get cancelled out as soon as a single move from one face to another is used a second time (see Eulerian paths) (but distinguishing moves in reflected states), ensuring that the order of our group is finite. But actually the only thing what makes an identity is that (from left and right) it has no effect at all to any other element of the group, and that is why non-uniform borders (orbits on parallel lines have varying length) blow things up a little bit; unless the above condition is fulfilled, you have to take the least common multiple of all orbits where a vector might be moved to in the due course of addition operation.
In general boundaries make vectores bending backwards (keeping their length) representing reflection in case the approaching vectors seemingly want to enter an hole area (in physics tongue reflection at the free end). The multiple reflections taking place in case of several holes (possibly with partly coinciding lines) are (for now) supposed to be commutative (that is whether 2 (original plus one mirrored graph) are enough, or u need 4 instances for 2 holes) and therefore we simply take the graph and it's mirrored instance (experts in manifold theory might name it the 'double'), and then glue together all corresponding inner lines (instead one could restrict oneself to only gluing one line, and then requiring more graphs for the other holes).
The choice of coordinate lines (origin, distIE) must not have any effect on the resulting final group, same as in mathematical physics, where different coordinate systems (for example cartesian and polar) are used according to let's say the given potential in order to simplify things.
Let's take a cube now and see what we can do with it. Define a := flip rot(poly/2) (means first flip, then rots afterwards) and b := rot a rot-1. The existence of non-trivial boundaries implies shapes with valences other than poly, so we sort of have the more general polytope case then anyway. By using the dynamic arbitrary 'valence/2' definition of what is considered straight for the coordinate lines we achieve a nice walking around boundaries. It seems this non-static handling makes the homotopy treatment s.th. really different from (co)homology (otherwise we could have stayed with the rot/flip things)?!
Just think of the generator "a" as a step to the right (without changing your eyes' direction thereby) and of "b" as a step straight forward (using canonical Cartesian coordinate lines as usual).
gap>f := FreeGroup("a", "b");;
gap>g := f / [ f.1^4 , f.2^4 , (f.1*f.2)^3 , (f.1^2*f.2^2)^2 ,
(f.1*f.2^2)^2 , (f.2*f.1^2)^2 ];;
gap>Size(g);
24
gap>IsAbelian(g);
false
gap>a:=g.1;;b:=g.2;;
gap>a*b = b*a;
false
gap>FreeGroupOfFpGroup(g)=f;
true
gap>FreeGeneratorsOfFpGroup(g);
[ a, b ]
gap>hom := IsomorphismSimplifiedFpGroup(g);
[ a, b ] -> [ a, b ]
gap>s := Range(hom);
<fp group on the generators [ a, b ]>
gap>RelatorsOfFpGroup(s);
[ b^4 , a^4 , a*b^2*a*b^-2 , b*a^2*b*a^-2 , a^-1*b*a^-1*b*a^-1*b ]
gap>h := IsomorphismPermGroup(g);
[ a, b ] -> [ (2,4,3,5), (1,2,6,3) ]
gap>h2 := IsomorphismPermGroup(s);
[ a, b ] -> [ (1,2,4,3), (2,5,3,6) ]
gap>d := Image(h2, s);
Group([ (1,2,4,3), (2,5,3,6) ])
gap>IsSymmetricGroup(d);
true
gap>s4 := SymmetricGroup(4);;
gap>IsomorphismGroups(d,s4);
[ (1,2,4,3), (2,5,3,6) ] -> [ (1,4,2,3), (1,4,3,2) ]
gap>IsomorphismGroups(s,s4);
[ a, b ] -> [ (1,2,4,3), (1,4,2,3) ]
gap>StructureDescription(d);
'S4'
In case of a tetrahedron, a cube/octahedron and an icosahedron/dodecahedron we get, as expected, the standard groups A(4), S(4) and A(5).
Of course, same as in linear algebra there are degenerate coordinate systems where not the full group is achieved, for example the icosahedron gets A(5) with distIE_a=2, distIE_b=1, rel_a_b=2 and the same with distIE_a=2, distIE_b=2, rel_a_b=1], but only Z(5) with distIE_a=2, distIE_b=1, rel_a_b=1. Btw. transformations between equivalent systems build quite certainly a group again. We now have the dump utility where the axes can be independently specified, but of course there are many many more systems possible, and so the whole transformation group has yet to be determined.
Recall into your mind that for example on a cube in doing [a,b]=aba-1b-1 there are 12 steps and one full counter-clockwise spin, on the standard plane no spin occurs, and on the quad_star (start with a 'vector' looking against a wall in the middle) you have again 12 steps, but a clockwise spin this time. It seems this is actually called torsion and will turn out to be quite decisive later on in the section called “Group Cohomology” :-)
It's a field of study in its own right to investigate what relations (the non-defining additional information are called laws) will be sufficient to present a well-defined finite group in this context. But one should ask oneself if an encoding by generators/relations and subsequent reconstructing by the computer algebra system is a somewhat complicated and indirect procedure. And yes, actually there is no reason why we shouldn't dump out a permutation representation directly (with a moved along coordinate system's direction and orientation resulting in labels to work on). Here (Table 11.1, “Holonomy Groups”) are some resulting generators "a", "b" and groups (often only the lossy version is given) for various graphs.
Table 11.1. Holonomy Groups
| graph | a | b | group |
|---|---|---|---|
| dode 0,1,5,7,9 | A(16) | ||
| oct_stl_I | |||
| tetra_reticul | |||
| tetra_reticul_big | |||
| tetra_reticul_tall | |||
| oct_stl_II | Z(2)15 × Z(3)4 | ||
| ico_stl_I | |||
| ico_stl_II | Z(2)2 × A(5)4 | ||
| doubletetra | |||
| cube_triang_II | A(36) | ||
| M_24 | (1,2,3,4,5,6, 7,8,9,10,11,12, 13,14,15,16,17, 18,19,20,21) (22,24,23) | (1,22,17,16,23, 20,19,24,14,3, 2,13,10,7,6,9, 8,5,12,11,4) (15,21,18) | M(24) |
| doublecube | Z(2)10 × A(5) | ||
| dblcube 10 | Z(2)13 × A(7) | ||
| dblcube 8 | Z(2)25 × A(26) | ||
| dblcube 6,8 | (1,2,3,4) (5,6,7,8,9,10, 11,12,13,14,15,16) (17,18,19,20,21,22) (27,26,23,29) (24,32,31,30,25,28) | (5,17,9,13) (6,23,24,1,25,26, 12,3,18,27,22,2) (7,11,28,15) (8,21,20,19,10,29) (14,30,31,32,16,4) | Z(2)16 × A(16) |
| dblcube 3,8 | Z(2)13 × A(7) | ||
| dblcube 0,6,8 | (1,2,3,4,5,6) (7,8,9,10,11,12) (14,13,15,16) | (7,6,5,8) (9,13,14,12,11,10) (15,4,3,2,1,16) | Z(2)12 × Z(3)2 |
| triplecube | Z(2)13 × A(7) | ||
| rhombic_dodeca | |||
| zonotope_5 | Z(2) × Z(5)8 × A(8) | ||
| torus_3x4 | C12 | ||
| torus_3x4 1,4,5,6,9 | Z(2)10 × A(10) | ||
| 2x3_rectangle | |||
| quad_star | Z(2)19 × Z(3)9 × A(9) | ||
| rubik_cube_2 | Z(2)11 × Z(3)4 | ||
| rubik_cube_3 | Z(2)19 × Z(3)11 | ||
| rubik_cube_3_1 | Z(2) × Z(3)70 × A(36)2 | ||
| costa | Z(2)30 | ||
| quasi_0 | |||
| quasi_1 | Z(2)15 × Z(5)15 × A(15) | ||
| quasi_2 | Z(2)53 × Z(5)53 × A(53) | ||
| quasi_hepta_0 | |||
| dode_tor_6 | Z(2) × A(290) | ||
| torus_hexa_3 | C15 | ||
| hexa_tor | A(432) | ||
| fancy hepta | Z(2)80 × A(80) |
A cube with one hole gives just the same group as the normal cube. The doublecube has been treated with one and two outer holes, one inner hole or various possibilities how two inner holes can be placed (neighboured, touching, opposing or asymmetric). With two connected inner holes this gives again just the same group as the untouched doublecube. An outer hole enables a due group treatment with standard Cartesian (canonical) coordinates (only memory limits us), but one inner hole makes severe problems, so there our choice of coordinate lines (as shown above in the nice picture) are probably really necessary.
For now let's finish with some more general remarks again. Vectors with same start and end may be different (in first place at least - that is before moving along), and vectors with same start and different end may be the same. Orientation changes inside/outside won't take place in our transfos (parallel or perpendicular) though. And pay due attention to the fact that there is no longer a 1:1 correspondence between the labels used in the permutation representation and the group elements, the number of the latter just explodes.
It seems that (for example in the case of the doublecube with holes at faces with ids 6 and 8) there occur singularities (a change from 2-dim to 1-dim variety, the rank drops)?! We cured it with a regular parametrization involving glueShapes of valence 5, all is quite fishy but works.
The flip/rot groups are not the same as the 'vector' groups, on a torus with squares (quadrilateral faces) for example not all directions are transformed into another, the group is not transitive regarding the oriented edges but has multiple orbits (as a result periods for 'a' may differ from that for 'b' so it's not lcm over all, but for the rot/flip it is).
As you can see (in doublecube, triplecube, ico_stl_II, rubik_cube_3_1 for example), it happens that the 'vector' groups and the rot/flip groups differ by a factor of Z(2), but for the dodecahedron and quad_star this factor is not needed, probably because there the rotation (linear operation) can be globally expressed as a series of translations. Adding rotation to the group seems to be analog to some sort of 'complexification'.
Let's look at the dodecahedron and the generators for the holonomy group (Example 11.1, “Dodecahedron Holonomy”).
Example 11.1. Dodecahedron Holonomy
gap>G := Group( (25,29,36,43,6)(1,18,32,47,48)(2,37,40,49,17)(3,51,41,31,35)(54,30,16,22,38) (7,26,34,15,23)(10,14,24,39,50)(11,21,45,8,27)(60,13,19,53,57)(20,4,59,42,12) (9,28,33,58,5)(52,44,55,56,46), (1,2,3,4,5)(18,19,20,21,14)(32,33,11,34,29)(54,40,47,50,26)(6,38,51,57,48) (7,55,41,49,43)(10,25,37,53,58)(60,17,22,44,59)(15,24,28,12,46)(9,13,35,52,45) (30,36,39,27,56)(42,31,16,23,8), (1,6,7,8,9)(18,2,22,23,24)(32,19,35,16,36)(25,38,44,45,14)(3,52,15,29,37) (41,57,58,11,56)(10,26,55,59,5)(60,48,50,27,42)(47,33,12,31,49)(20,46,30,40,53) (13,17,43,39,28)(54,51,4,21,34), (1,10,11,12,13)(18,25,26,27,28)(32,37,38,7,39)(2,6,50,33,19)(3,22,43,47,53) (54,55,8,24,29)(60,5,21,46,31)(14,34,56,42,9)(15,30,41,59,45)(20,35,17,48,58) (51,44,23,36,40)(4,52,16,49,57), (1,14,15,16,17)(18,29,30,31,13)(32,40,41,42,28)(25,34,46,35,2)(3,38,26,11,20) (54,56,12,19,37)(6,10,21,52,22)(7,50,58,4,44)(47,57,59,8,39)(51,55,27,33,53) (48,5,45,23,43)(60,9,24,36,49) );;
We try to express a rotation on a dodecahedron as a word in those generators.
gap>perms:=[G.1, G.2];;
gap>puzzle:=Group(perms);;
gap>Size(puzzle);
60
gap>F:=FreeGroup("a", "b");;gens:=GeneratorsOfGroup(F);;
gap>hom:=GroupHomomorphismByImages(F, puzzle, gens, perms);;
gap>word:=PreImagesRepresentative(hom, G.3);
a^-1*b^-4
Check that d = b-1c-4 as well, so we do know by now how to express a rotation (btw. we could as well think of symmetric and antisymmetric combinations). In Table 11.2, “c and rot as words” we expressed c and the local rot as words over (a,b) for some graphs.
Table 11.2. c and rot as words
| graph | c | rot |
|---|---|---|
| tetrahedron | b-1a-1 | a-1b-1 |
| cube | a-1 | aba-1 |
| dodecahedron | a-1b-4 | aba-2 |
| doubletetra | a-3*b-1*a-1 | a-1*b-1 |
| doublecube | a-1 | fail |
| ico_stl_II | a-1 | fail |
| rubik_cube_3_0 | a-1 | fail |
| rubbik_cube_3_1 | (out of memory) | fail |
| rubbik_cube_3_5 | (out of memory) | |
| quad_star | a-1 | a-1*b*a-1*b-1*a* … *a3*b*a-1 |
| torus_hexa_3x5 | b*a-1 | |
| hexa_tor | (out of memory) |
In case of a general polytope (or a polyhedron with a boundary involving glueShapes with a valence != poly) you could think of lcm - many generators (a buckyball will need 5*6) to start with. Those groups with only two generators ('a' and 'b') are groups in its own right anyway, only the question how to locate 'b' relative to 'a' remains somewhat dubious. But luckily with those permutation representations it's possible to do the full group, and then adjusting this 'b relative to a' so that nice subgroups result becomes feasable.
We experimented with up to poly generators (for an A-type piece) (going into -x direction is not the same as the inverse of +x because of time goes +1) bearing the possibility of a poly - manifold in mind. But (it might be astonishing to the unprepared reader) it turned out that (at least in all examples we investigated, including 'hexa_tor') always two generators are enough! This is good news. Now it's time to finish this experimental probing by presenting a quick rigorous proof of this fact, but probably we need some help for it and postpone it.
A Chess' knight-like piece gets not a mere subgroup but takes other generators (let's start with poly*2 many and then see if again two is all we need). In this way the correct reflection at a boundary can be achieved.
A piece able to walk more than one step (during a single move) will need more generators. Besides "a" and "b" (here the rotation has taken effect as a similarity transformation) we have another generator resulting from an energy boost operation. Labels of energy 1 are mapped to those with energy 2 and so on, thereby the reflection taking place at a boundary goes back along the former track though, so it's another sort of reflection than usual. Rotation acts on those labels as well, so we'll need a number of labels according to the lcm (of those for each loop).
It seems that the moves of a piece of type D are not invertible, so we don't have a group element here. The same thought applies to capturing moves (see also the talking in Chapter 17, Mathematical Physics where general game constellations other than drawn ones are discussed).
Let V denote the set of vectors, W the set of faces (space and time) and
It's an homomorphism (well, formals might clarify but are really hard work), because
The idea of linear operators does carry over from vector spaces (that is Abelian) to our 'vector' spaces. Operator means to specify for all elements of the group another group element to become the image. And linear simply means that it is enough to specify the images for the generators, and then the images for all group elements can be constructed because of linearity A(abaa..) = A(a)A(b)A(a)A(a)A(…). The next step then is to think about the classification into orthogonal, unitary, Hermitian (self-adjoint), symplectic etc. operators, Jordan normalform, commutator algebras and so on, see as well Chapter 13, Lie Groups and Algebras where we perhaps will deal with the linear operators.
Please don't confuse linear and homomorph mappings though.
Now what happens when we use non-straight coordinate lines instead? In any case we can make up a new imaginary boundary line by cutting along a walk, and a new group will result which is using the same labels (with their doubles). Remember that labels on such a trail were only needed once for the group? So now we have one such a labels set for the group to the left, and one set for the other part. Embed all the stuff in a big supergroup, and we can regard the transformation of generators (at one place for example aaa becomes abc but not necessarily everywhere like that) as a dynamic behavior under the influence of some force, potential or s.th. like that.
Without doubled labels, simply let's use the following lines on a rubik_cube_3: (to be done)
The resulting group then is …
For example in case of a boundary, there is an ambiguity how to deal with it. One can (as we do now) use the inner boundary lines as coordinate lines, and (more to the remaining graph away from any boundary problem) just proceed as usual. Or one can sort of remove the inner line and this way create a second graph with a new boundary, and so another coordinate line. It's to say there is the choice over various connections fulfilling our purposes, with different behaviors using constant momentums. How do the groups differ, or are they the same? Strongly 'curved' spaces (complicated connections) will be needed for highly non-trivial interactions between multiple Chess pieces …
And the transformations mapping some coordinate lines to others form a group as well?!
Or perhaps our chosen connection can be characterized as a solution of an universal mapping problem, that is: given another connection (resulting in a connected group), then there exists a unique map such that the following diagram is commutative …