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 libsemigroups::Action directly,
but rather via the more convenient aliases
libsemigroups::RightAction and
libsemigroups::LeftAction.
To use libsemigroups::RightAction and
libsemigroups::LeftAction with custom types, actions, and so
on, see libsemigroups::ActionTraits.
See also libsemigroups::ImageLeftAction and
libsemigroups::ImageRightAction.
using namespace libsemigroups;
using PPerm = PPermHelper<16>::type;
RightAction<PPerm, PPerm, ImageRightAction<PPerm, PPerm>> o;
o.add_seed(One<PPerm>()(16));
o.add_generator(
PPerm({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({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({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({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(); // 65536
o.digraph().nr_scc(); // 17
The classes in libsemigroups for actions are: