Combinatorics of the fullerenes

#### Combinatorics of the fullerenes

For various fullerenes of the form C20 to C80 systems of generators of the action of the symmetry group or of the group of rotational symmetries on the sets of vertices, faces or edges were computed in order to derive the cycle indices for these actions. (See [7] or click here. There is a standard routine for computing these generators:

```INT gen_full(a,s,b)   OP a,b; char *s;
```
`a` is an INTEGER object holding the number of C-atoms in the fullerene, which must be among 20, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 70 and 80. More details about the group action must be given in `*s`. The first letter of `*s` indicates where the group is acting on:
 first letter of `*s` action on the set of `v` vertices `e` edges `f` faces.
The second letter indicates which symmetry group is acting:
 second letter of `*s` symmetry group `r` rotational symmetries `s` full symmetry group.
For some fullerenes Cn, which have only rotational symmetries (for n=32, 42, 46, 48, 52 and 54), this second letter can be left out. In the case when `a` equals 40 or 44, there are two symmetry groups discussed in [7], which can be specified by a third letter:
 third letter of `*s` symmetry group `t` T symmetry `d` D symmetry.
Finally `b` is a VECTOR of generators (PERMUTATIONs) of the symmetry group.

Here is a list of all the different routines for the generators together with the files (in the subdirectory "data" needed:

```INT gen_full20_vertices(a)              OP a; full20vr.gen
INT gen_full20_vertices_extended(a)     OP a; full20v.gen
INT gen_full20_edges(a)                 OP a; full20er.gen
INT gen_full20_edges_extended(a)        OP a; full20e.gen
INT gen_full20_faces(a)                 OP a; full20fr.gen
INT gen_full20_faces_extended(a)        OP a; full20f.gen
INT gen_full24_vertices(a)              OP a; full24vr.gen
INT gen_full24_vertices_extended(a)     OP a; full24v.gen
INT gen_full24_edges(a)                 OP a; full24er.gen
INT gen_full24_edges_extended(a)        OP a; full24e.gen
INT gen_full24_faces(a)                 OP a; full24fr.gen
INT gen_full24_faces_extended(a)        OP a; full24f.gen
INT gen_full26_vertices(a)              OP a; full26vr.gen
INT gen_full26_vertices_extended(a)     OP a; full26v.gen
INT gen_full26_edges(a)                 OP a; full26er.gen
INT gen_full26_edges_extended(a)        OP a; full26e.gen
INT gen_full26_faces(a)                 OP a; full26fr.gen
INT gen_full26_faces_extended(a)        OP a; full26f.gen
INT gen_full28_vertices(a)              OP a; full28vr.gen
INT gen_full28_vertices_extended(a)     OP a; full28v.gen
INT gen_full28_edges(a)                 OP a; full28er.gen
INT gen_full28_edges_extended(a)        OP a; full28e.gen
INT gen_full28_faces(a)                 OP a; full28fr.gen
INT gen_full28_faces_extended(a)        OP a; full28f.gen
INT gen_full30_vertices(a)              OP a; full30vr.gen
INT gen_full30_vertices_extended(a)     OP a; full30v.gen
INT gen_full30_edges(a)                 OP a; full30er.gen
INT gen_full30_edges_extended(a)        OP a; full30e.gen
INT gen_full30_faces(a)                 OP a; full30fr.gen
INT gen_full30_faces_extended(a)        OP a; full30f.gen
INT gen_full32_vertices(a)              OP a; full32v.gen
INT gen_full32_edges(a)                 OP a; full32e.gen
INT gen_full32_faces(a)                 OP a; full32f.gen
INT gen_full34_vertices(a)              OP a; full34vr.gen
INT gen_full34_vertices_extended(a)     OP a; full34v.gen
INT gen_full34_edges(a)                 OP a; full34er.gen
INT gen_full34_edges_extended(a)        OP a; full34e.gen
INT gen_full34_faces(a)                 OP a; full34fr.gen
INT gen_full34_faces_extended(a)        OP a; full34f.gen
INT gen_full36_vertices(a)              OP a; full36vr.gen
INT gen_full36_vertices_extended(a)     OP a; full36v.gen
INT gen_full36_edges(a)                 OP a; full36er.gen
INT gen_full36_edges_extended(a)        OP a; full36e.gen
INT gen_full36_faces(a)                 OP a; full36fr.gen
INT gen_full36_faces_extended(a)        OP a; full36f.gen
INT gen_full38_vertices(a)              OP a; full38vr.gen
INT gen_full38_vertices_extended(a)     OP a; full38v.gen
INT gen_full38_edges(a)                 OP a; full38er.gen
INT gen_full38_edges_extended(a)        OP a; full38e.gen
INT gen_full38_faces(a)                 OP a; full38fr.gen
INT gen_full38_faces_extended(a)        OP a; full38f.gen
INT gen_full40t_vertices(a)             OP a; full40tvr.gen
INT gen_full40t_vertices_extended(a)    OP a; full40tv.gen
INT gen_full40t_edges(a)                OP a; full40ter.gen
INT gen_full40t_edges_extended(a)       OP a; full40te.gen
INT gen_full40t_faces(a)                OP a; full40tfr.gen
INT gen_full40t_faces_extended(a)       OP a; full40tf.gen
INT gen_full40d_vertices(a)             OP a; full40dvr.gen
INT gen_full40d_vertices_extended(a)    OP a; full40dv.gen
INT gen_full40d_edges(a)                OP a; full40der.gen
INT gen_full40d_edges_extended(a)       OP a; full40de.gen
INT gen_full40d_faces(a)                OP a; full40dfr.gen
INT gen_full40d_faces_extended(a)       OP a; full40df.gen
INT gen_full42_vertices(a)              OP a; full42v.gen
INT gen_full42_edges(a)                 OP a; full42e.gen
INT gen_full42_faces(a)                 OP a; full42f.gen
INT gen_full44d_vertices(a)             OP a; full44vr.gen
INT gen_full44d_vertices_extended(a)    OP a; full44v.gen
INT gen_full44d_edges(a)                OP a; full44er.gen
INT gen_full44d_edges_extended(a)       OP a; full44e.gen
INT gen_full44d_faces(a)                OP a; full44fr.gen
INT gen_full44d_faces_extended(a)       OP a; full44f.gen
INT gen_full44t_vertices(a)             OP a; full44tv.gen
INT gen_full44t_edges(a)                OP a; full44te.gen
INT gen_full44t_faces(a)                OP a; full44tf.gen
INT gen_full46_vertices(a)              OP a; full46v.gen
INT gen_full46_edges(a)                 OP a; full46e.gen
INT gen_full46_faces(a)                 OP a; full46f.gen
INT gen_full48_vertices(a)              OP a; full48v.gen
INT gen_full48_edges(a)                 OP a; full48e.gen
INT gen_full48_faces(a)                 OP a; full48f.gen
INT gen_full50_vertices(a)              OP a; full50vr.gen
INT gen_full50_vertices_extended(a)     OP a; full50v.gen
INT gen_full50_edges(a)                 OP a; full50er.gen
INT gen_full50_edges_extended(a)        OP a; full50e.gen
INT gen_full50_faces(a)                 OP a; full50fr.gen
INT gen_full50_faces_extended(a)        OP a; full50f.gen
INT gen_full52_vertices(a)              OP a; full52v.gen
INT gen_full52_edges(a)                 OP a; full52e.gen
INT gen_full52_faces(a)                 OP a; full52f.gen
INT gen_full54_vertices(a)              OP a; full54v.gen
INT gen_full54_edges(a)                 OP a; full54e.gen
INT gen_full54_faces(a)                 OP a; full54f.gen
INT gen_full56_vertices(a)              OP a; full56vr.gen
INT gen_full56_vertices_extended(a)     OP a; full56v.gen
INT gen_full56_edges(a)                 OP a; full56er.gen
INT gen_full56_edges_extended(a)        OP a; full56e.gen
INT gen_full56_faces(a)                 OP a; full56fr.gen
INT gen_full56_faces_extended(a)        OP a; full56f.gen
INT gen_full58_vertices(a)              OP a; full58vr.gen
INT gen_full58_vertices_extended(a)     OP a; full58v.gen
INT gen_full58_edges(a)                 OP a; full58er.gen
INT gen_full58_edges_extended(a)        OP a; full58e.gen
INT gen_full58_faces(a)                 OP a; full58fr.gen
INT gen_full58_faces_extended(a)        OP a; full58f.gen
INT gen_full60_vertices(a)              OP a; fullvr.gen
INT gen_full60_vertices_extended(a)     OP a; fullv.gen
INT gen_full60_edges(a)                 OP a; fuller.gen
INT gen_full60_edges_extended(a)        OP a; fulle.gen
INT gen_full60_faces(a)                 OP a; fullfr.gen
INT gen_full60_faces_extended(a)        OP a; fullf.gen
INT gen_full60_diagonals(a)             OP a; fulld.gen
INT gen_full70_vertices(a)              OP a; full70vr.gen
INT gen_full70_vertices_extended(a)     OP a; full70v.gen
INT gen_full70_edges(a)                 OP a; full70er.gen
INT gen_full70_edges_extended(a)        OP a; full70e.gen
INT gen_full70_faces(a)                 OP a; full70fr.gen
INT gen_full70_faces_extended(a)        OP a; full70f.gen
INT gen_full80_vertices(a)              OP a; full80vr.gen
INT gen_full80_vertices_extended(a)     OP a; full80v.gen
INT gen_full80_edges(a)                 OP a; full80er.gen
INT gen_full80_edges_extended(a)        OP a; full80e.gen
INT gen_full80_faces(a)                 OP a; full80fr.gen
INT gen_full80_faces_extended(a)        OP a; full80f.gen
```

For doing Pólya enumeration with fullerenes there is the following routine for computing the cycle indices of the symmetry groups of various fullerenes:

```INT zykelind_full(a,s,b)   OP a; char *s;
```
where `a`, `s` and `b` must be used in the same way as it is indicated for `gen_full(a,s,b)`.

For the fullerene C60 there are some multi-dimensional cycle indices as well. These are 6-dimensional cycle indices for the simultanious action on the sets of vertices, pentagonal and hexagonal edges, pentagonal and hexagonal faces and on the set of diagonals of C60. The corresponding routines are

```INT zykelind_full60(a)                  OP a;
INT zykelind_full60_extended(a)         OP a;
```
where `a` is the 6-dimensional cycle index of the group of all rotational symmetries, or of all symmetries (in the `_extended` version.)

By extracting some families of indeterminates and identifying different alpabets the cycle indices for the action on the sets of vertices, edges, faces or diagonals can be computed by:

```INT zykelind_full60_vertices(a)           OP a;
INT zykelind_full60_vertices_extended(a)  OP a;
INT zykelind_full60_edges(a)              OP a;
INT zykelind_full60_edges_extended(a)     OP a;
INT zykelind_full60_faces(a)              OP a;
INT zykelind_full60_faces_extended(a)     OP a;
INT zykelind_full60_diagonals(a)          OP a;
```

For chiral fullerenes (i.e. fullerenes having some symmetries which are no proper rotations) we can compute the cycle index of the alternating representation of their symmetry groups by applying

```INT zykelind_full_alternating_rep(a,s,b)  OP a,b; char *s;
```
Again `a`, `s` and `b` must be used as above. It can be computed by subtracting the cycle index of the full symmetry group from the cycle index of the subgroup of all proper rotations.

In general the cycle index of the alternating representation of a group action GX can be computed from the cycle index Z(G,X) by changing the signs of all the summands coming from odd permutations in the cycle index. The following routine

```INT zykelind_alternating_representation(a)  OP a;
```
takes as an input the cycle index `a` of a group action and changes it to the cycle index of this group action under the alternating representation.
harald.fripertinger@kfunigraz.ac.at,
last changed: November 19, 2001

 Combinatorics of the fullerenes