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