# zqt man page

zqt — clean and quotient on a matrix

## Synopsis

`zqt [Options] <Subsp> <Matrix> <Quotient>`

## Description

This program reads in a subspace and applies the canonical map to its quotient on a matrix.  The result is written out to Quot.  Subsp should be a matrix in semi-echelon form, and the two input matrices must have the same field parameter and the same number of columns.  If this is not the case the program stops with an error message.

Otherwise the program reads in Subsp, builds a table of pivot columns and then proceeds, row by row, through Matrix.  For each row, the significant entries are zeroized by adding the correct multiple of rows of Subsp.  The insignificant columns are then extracted and written out to Quot.  Hence

• Subsp has M rows, N columns and is in echelon form,
• Matrix has L rows, N columns and is otherwise arbitrary, and
• Quot has L rows and N-M columns.

In other words, the program calculates the projection of Matrix onto the B-A dimensional quotient space defined by Subsp.  If the -i option is used, zqt calculates the action of Matrix on the quotient.  This is done by projecting the matrix as explained above, and taking only the insignificant rows.  Insignificant rows are defined by treating the pivot table as a table of rows rather than columns.  Example: Let "spc" be an invariant subspace and "z1" an algebra element (a square matrix). Then, after

zqt -i spc z1 q1</pre>

"q1" contains the action of "z1" on the quotient by "spc".

Another, less obvious use of zqt is to condense a matrix representation. First, find an element E of the group algebra with stable rank, i.e., rank(E*E) = rank(E).  This can be done by taking any element F of the group algebra and raising it to higher powers until the rank stabilizes.  We may then condense onto the kernel of E as follows:

 zef E X X is the echelon form of Image(E) znu E Y Y is the kernel of E zqt X Y Z calculate the canonical projection of Y ... ziv Z T ... and adjust Y so that the canonical ... zmu T Y Y1 ... projection of Y1 is the identity zmu Y1 Z1 T1 calculate KZ1 = condensed Z1 zqt X T1 KZ1 zmu Y1 Z2 T1 calculate KZ2 = condensed Z2 zqt X T1 KZ2

## Options

-Q

Quiet, no messages.

-V

Verbose, more messages.

-T <MaxTime>

Set CPU time limit

-i

Take only insignificant rows of Matrix.  Quotient will be the action of Matrix on the quotient by subspace Subsp.

## Implementation Details

It is not completely checked that Subsp is in echelon form.

The Subspace and one row of both Matrix and Subsp must fit into memory.