Actions¶
This page contains an overview summary of the functionality in
libsemigroups
for finding actions of semigroups, or groups, on sets. The
notion of an “action” in the context of libsemigroups
is analogous to the
notion of an orbit of a group.
You are unlikely to want to use Action
directly, but rather via
the more convenient aliases RightAction
and LeftAction
.
To use RightAction
and LeftAction
with custom types,
actions, and so on, see ActionTraits
.
See also ImageLeftAction
and ImageRightAction
.
using namespace libsemigroups;
RightAction<PPerm<16>, PPerm<16>, ImageRightAction<PPerm<16>, PPerm<16>>> o;
o.add_seed(PPerm<16>::identity(16));
o.add_generator(
PPerm<16>({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0},
16));
o.add_generator(
PPerm<16>({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
16));
o.add_generator(
PPerm<16>({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14},
16));
o.add_generator(
PPerm<16>({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
16));
o.reserve(70000);
o.size(); // returns 65536
The classes in libsemigroups
for actions are: