GroupAction is the class of all group actions on polynomial rings for the purpose of computing invariants. This is not typically used directly, delegating creation to the various constructor functions for different kinds of group actions:

- FiniteGroupAction, the class of a finite matrix group action, is created with finiteAction
- DiagonalAction, the class of the diagonal action of a product of a torus and a finite abelian group, is created with diagonalAction
- LinearlyReductiveAction, the class of a linearly reductive matrix group action, is created with linearlyReductiveAction

Each class implements different algorithms to compute invariants. Although mathematically speaking all the above group actions are linearly reductive (at least in the non modular case), the class LinearlyReductiveAction should be used only when none of the other classes apply because it has fewer and possibly less efficient methods.

The class GroupAction is implemented as a HashTable. When created it stores information such as the action (in a format dependent upon the group) and the polynomial ring being acted upon.

- DiagonalAction -- the class of all diagonal actions
- FiniteGroupAction -- the class of all finite group actions
- LinearlyReductiveAction -- the class of all (non finite, non toric) linearly reductive group actions

- action(RingOfInvariants) -- see action -- the group action that produced a ring of invariants

- dim(GroupAction) -- dimension of the polynomial ring being acted upon
- invariantRing(GroupAction) -- see invariantRing -- the ring of invariants of a group action
- PolynomialRing ^ GroupAction -- see invariantRing -- the ring of invariants of a group action
- ring(GroupAction) -- the polynomial ring being acted upon

The object GroupAction is a type, with ancestor classes HashTable < Thing.