GAP (Ferret) - Chapter 1: The Ferret Package

Goto Chapter: Top 1 2 3 Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

1 The Ferret Package
1.1 Replacing Built-in functionality
1.1-1 EnableFerretOverloads
1.1-2 FerretOverloadsEnabled
1.2 Using 'Solve' to solve problems directly

### 1 The Ferret Package

This chapter describes the GAP package Ferret. Ferret implements highly efficient implementations of a range of search algorithms on permutation groups. If you are interested in if Ferret can be applied to another problem, please contact the authors, who will be happy to look into if your problem can be solved with Ferret.

#### 1.1 Replacing Built-in functionality

Ferret automatically installs methods which replace GAP's a number of GAP's built-in functionality:

- Intersection for a list of permutation groups.

- Stabilizer(G,S,Action) for a permutation group G, and the actions:

  - `OnSets`

  - `OnOnSets`

  - `OnSetsDisjointSets`

  - `OnSetsSets`

  - `OnTuples`

  - `OnPairs`

  - `OnDirectedGraph`

- Stabilizer(G, S) for a permutation group G and a:

  - permutation

  - transformation

  - partial permutation

If you would like to disable this functionality, you can use 1.1-1.

##### 1.1-1 EnableFerretOverloads

`‣ EnableFerretOverloads`( [active] ) | ( function )

if active (a bool) is true, then enable Ferret specialisations of Intersection and Stabilizer. Call with active false to disable.

##### 1.1-2 FerretOverloadsEnabled

`‣ FerretOverloadsEnabled`( ) | ( function )

Return if Ferret specialisations of Intersection and Stabilizer are currently enabled.

#### 1.2 Using 'Solve' to solve problems directly

The main method of using Ferret's functionality is the `Solve` (2.1-3) method. This method intersects a list of permutation groups. The unusual feature is that these permutation groups can be represented in a variety of ways. They can be usual GAP permutation groups given as a list of generators, or they can be the group which is the stabilizer of combinatorial object under some action. Larger problems are then composed from these pieces. For example, the stabilizer of a set S under a group G can be expressed as the intersection of the group which stabilizes the set S and the group G. For this problem, there would be no point using `Solve` (2.1-3), as GAP's built in 'Stabilizer' function provides the same functionality. However, with `Solve` (2.1-3) we can intersect any number of groups at the same time, for example finding the intersection of two groups G and H, the stabilizer of a set S and the stabilizer of a set of sets T, with the following code:

    gap> Solve([ConInGroup(G), ConInGroup(H),
    > ConStabilize(S, OnSets), ConStabilize(T, OnSetSets)])

The currently allowed arguments to `Solve` (2.1-3) are:

- `ConInGroup` (2.1-2), which represents a Permutation Group in GAP

- `ConStabilize` (2.1-1), which takes an object and an action.

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 Ind

generated by GAPDoc2HTML