class of combinatorial structures. The OGF of where X has OGF and the EGF of where X is labelled with EGF are given by and In the labelled case we have the additional requirement that X not contain elements of size zero. It will sometimes prove convenient to add one to to indicate the presence of one copy of the empty set. It is possible to assign meaning to both (the most common example is the case of unlabelled sets) and To prove the theorem simply apply PET (Pólya enumeration theorem) and the labelled enumeration theorem. The power of this theorem lies in the fact that it makes it possible to construct operators on generating functions that represent combinatorial classes. A structural equation between combinatorial classes thus translates directly into an equation in the corresponding generating functions. Moreover, in the labelled case it is evident from the formula that we may replace by the atom z and compute the resulting operator, which may then be applied to EGFs. We now proceed to construct the most important operators. The reader may wish to compare with the data on the cycle index page. The sequence operator This operator corresponds to the class and represents sequences, i.e. the slots are not being permuted and there is exactly one empty sequence. We have and The cycle operator This operator corresponds to the class i.e., cycles containing at least one object. We have or and This operator, together with the set operator , and their restrictions to specific degrees are used to compute random permutation statistics. There are two useful restrictions of this operator, namely to even and odd cycles. The labelled even cycle operator is which yields This implies that the labelled odd cycle operator is given by The multiset/set operator The series is i.e., the symmetric group is applied to the slots. This creates multisets in the unlabelled case and sets in the labelled case (there are no multisets in the labelled case because the labels distinguish multiple instances of the same object from the set being put into different slots). We include the empty set in both the labelled and the unlabelled case. The unlabelled case is done using the function so that Evaluating we obtain For the labelled case we have In the labelled case we denote the operator by , and in the unlabelled case, by . This is because