# zvp man page

zvp — vector permute on matrices

## Synopsis

**zvp** [Options] *<Mat> <Seed> <Perm>* [*<Orbit>*]

## 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.

## Options

**-Q**- Quiet, no messages.
**-V**- Verbose, more messages.
**-T***<MaxTime>*- Set CPU time limit
**-g***<NGen>*- Set number of generators. Default: 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: 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***<N>*- Start with seed vector
*N*instead of 1.

## 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.

## Input Files

*Mat*.{1,2,...}- Generators (square matrices).
*Seed*- Seed vectors (matrix).

## Output Files

*Perm*.{1,2,...}- Permutations.
*Orbit*- The orbit (matrix).