We provide *signed permutations*, that is permutations that can additionally change the sign of their result.

Assume \(n \in \mathbb{N}\), then a signed permutation on \(n\) points is a permutation \(\pi\) on \(\{ 1 \ldots n \}\) together with signs \(sgn : \{ 1 .. n \} \rightarrow \{-1,1\}\). A signed permutation on \(n\) points acts on the set \(\{ -n \ldots 1, 1 \ldots n \}\) by \( \omega ^ { (\pi, sgn) } = sgn(\omega)\cdot sgn(|\omega|^\pi) \cdot (|\omega|^\pi) \).

We provide two representations of signed permutations, one as a list of images `IsSignedPermListRep`

(7.2-8) and one formed as pair of a permutation and a sign map `IsSignedPermRep`

(7.2-7). Our benchmarks indicate that a list of images is the better representation, and hence this is the default.

To get started with signed permutations consider the following example

gap> s := SignedPerm([2,-1]); <signed permutation in list rep> gap> 1 ^ s; 2 gap> 2 ^ s; -1 gap> OnPoints(2, s); -1

One can form groups out of signed permutations

gap> r := SignedPerm([-1,3,-2,4]);; t := SignedPerm([3,1,4,2]);; gap> G := Group(r,t); <group with 2 generators> gap> Size(G); 32 gap> Orbit(G, 1, OnPoints); [ 1, -1, 3, -3, -2, 4, 2, -4 ] gap> Stabilizer(G, 1, OnPoints); <group of size 4 with 9 generators>

Note that currently the package does not make an effort to exploit the special structure of signed permutation groups as permutation groups.

To create signed permutations in the different representations, we provide a constructor.

gap> r := NewSignedPerm(IsSignedPermRep, [-1,3,-2,4]);; gap> t := SignedPerm(IsSignedPermRep, [3,1,4,2]);; gap> G := Group(r,t); <group with 2 generators> gap> Size(G); 32 gap> r := NewSignedPerm(IsSignedPermListRep, [-1,3,-2,4]);; gap> t := SignedPerm(IsSignedPermListRep, [3,1,4,2]);; gap> G := Group(r,t); <group with 2 generators> gap> Size(G); 32

`‣ IsSignedPerm` ( arg ) | ( filter ) |

Returns: `true`

or `false`

Category of signed permutations

`‣ ListSignedPerm` ( perm ) | ( operation ) |

Convert a signed permutation into a list of images, equivalent to List([1..LargestMovedPoint(s)], x -> x^s);

`‣ ListSignedPerm` ( arg1, arg2 ) | ( operation ) |

Convert a signed permutation to a list of images of length `len`. Arguments perm, len

`‣ SignedPerm` ( arg ) | ( function ) |

Given a list of signed images create a signed permutation object in `IsSignedPermListRep`

(7.2-8).

`‣ NewSignedPerm` ( arg1, arg2 ) | ( constructor ) |

`‣ NewSignedPerm` ( arg1, arg2, arg3 ) | ( constructor ) |

`‣ IsSignedPermRep` ( arg ) | ( filter ) |

Returns: `true`

or `false`

Representation of signed permutations as a permutation and a vector of signs.

`‣ IsSignedPermListRep` ( arg ) | ( filter ) |

Returns: `true`

or `false`

Representation of signed permutations as a list of signed images

`‣ OnPosPoints` ( arg ) | ( function ) |

Only act as a permutation on \(\{ 1\ldots n\}\)

`‣ LargestMovedPoint` ( arg ) | ( attribute ) |

The largest point that is moved by the signed permutation, where moving includes changing the sign.

`‣ RandomSignedPermList` ( arg ) | ( function ) |

Create a random list of images that can be used to create a signed permutation.

`‣ RandomSignedPerm` ( arg ) | ( function ) |

Create a random signed permutation

generated by GAPDoc2HTML