MeatAxe: zvp - Vector permute

MeatAxe 2.4

- Main Page
- Related Pages
- Modules
- Data Structures

zvp - Vector permute

## Command Line

    zvp [Options] [-g NGen] [-l Limit] [-s Start] [-np] Man Seed Perm [Orbit]

Options
  Standard options, see Standard Command Line Options.

-g NGen
  Set the number generators (default is 2).

-n
  No output to files, messages only.

-p
  "Projective" mode, permute 1-spaces instead of vectors.

-v
  Write the orbit to Orbit.

-l Limit
  Set the orbit size limit. Default is 100000.

-m
  Generate seed vectors by takig all possible linear combinations of the rows of Seed. Without this option, only the rows of Seed are used as seed vectors.

-s Start
  Start with the given seed vector number instead of 1.

Mat
  Name of the representation.

Seed
  Seed space file name.

Perm
  Permutation file name.

Orbit
  Orbit file name. Default is "orbit".

## Input Files

Mat.1, Mat.2, ...
  Generators (square matrices).

Seed
  Seed vectors (matrix).

## Output Files

Perm.1, Perm.2, ...
  Permutations.

Orbit
  The orbit (matrix).

## Description

This program reads a set of matrices and one or more vectors from Seed, and finds the orbit of the vector under the matrices. The action of the matrices on the orbit is written out in permutation form.

By default, two matrices are read from Mat.1 and Mat.2. You can specify a different number of matrices using the "-g" option, but the naming scheme is always the same. All matrices must be square, over the same field, and of equal dimension. The seed space, Seed, must be a matrix over the same field and the number of columns must match the matrices.

The program tries seed vectors until no more seed vectors are available or the orbit is small enough (as specified by "-l"). With "-p" all vectors in the orbit file are normalized, i.e., their first non-zero entry is equal to one.

### Implementation Details

After initializing everything and reading the input files the program enters the main loop. The next seed vector is read in, or generated, and the orbit is set up initially to contain only this vector. Then, the complete orbit is calculated by applying the matrices to vectors in the orbit until no new vectors appear, or until the limit is reached. In the latter case, the program proceeds with the next seed vector. If an orbit has been found, the action of the two matrices on the orbit is written out in permutation format an appropriate message is printed. If the `-v' option was used, also the orbit is written out.

The matrices, seed vectors, and all vectors in the orbit must fit into memory.