This website uses Javascript to render markdown documents in your browser, apply syntax highlighting to code fragments and render $\LaTeX$ formulas. Below is the markdown source code of this page. You can either read that or enable Javascript to have it rendered to HTML.
# NAME
CInet::Symmetry - Symmetry groups
# SYNOPSIS
# Food for CInet::Relation's ->act method
say $relation->act($_) for HyperoctahedralGroup($relation)->@*;
# or for CInet::Seq symmetry reduction
my $mod = $seq->modulo(SymmetricGroup);
# DESCRIPTION
This module implements common symmetry groups acting on [CInet::Relation](/doc/CInet%3A%3ARelation)
objects. All groups are implemented and interfaced in a similar fashion.
For each group, there is a free-standing sub which is exported by default.
This sub returns a permutation presentation of the group which can be
passed to [CInet::Relation](/doc/CInet%3A%3ARelation)'s `->act` method or to [CInet::Seq](/doc/CInet%3A%3ASeq)'s
`->modulo` adapter. In addition, these subs keep a cache of group
presentations indexed by cubes, so that each is only computed once.
All arguments are passed to the `Cube` sub from [CInet::Cube](/doc/CInet%3A%3ACube) which
interprets it as a cube as described there.
In addition it is possible to not pass any argument at all. In this case,
a closure over the sub is returned that you can use later to obtain a
specific instance of this symmetry. This is useful when you have a
[CInet::Seq](/doc/CInet%3A%3ASeq) of [CInet::Relation](/doc/CInet%3A%3ARelation)s and do not want to repeat the cube
of these relations when using the `->modulo` method, like so:
my $reps = $seq->modulo(SymmetricGroup);
Refer to the documentation of [CInet::Seq::Modulo](/doc/CInet%3A%3ASeq%3A%3AModulo) and other places that
accept symmetry groups to see if they support this feature.
The following are almost the same:
my $type = SymmetricGroup;
my $type = \&SymmetricGroup;
my $type = sub { SymmetricGroup(@_) };
However, in the first case only, the return value is blessed into the
package `CInet::Symmetry::Type` which helps other code in CInet figure
out what you want done with that coderef.
## Exported subs
### SymmetricGroup :Export(:DEFAULT)
my $Sn = SymmetricGroup($cube);
Return a presentation of the symmetric group on the `$cube`.
### TwistedGroup :Export(:DEFAULT)
my $Tn = TwistedGroup($cube);
Return a presentation of the twisted symmetric group on the `$cube`.
### HyperoctahedralGroup :Export(:DEFAULT)
my $Bn = HyperoctahedralGroup($cube);
Return a presentation of the hyperoctahedral group on the `$cube`.
# AUTHOR
Tobias Boege <tobs@taboege.de>
# COPYRIGHT AND LICENSE
This software is copyright (C) 2020 by Tobias Boege.
This is free software; you can redistribute it and/or
modify it under the terms of the Artistic License 2.0.
Conditional Independence Net