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: