MeatAxe: zcl - Clean

MeatAxe 2.4

- Main Page
- Related Pages
- Modules
- Data Structures

zcl - Clean

## Command Line

    zcl [Options] Subsp Mat CleanedMat Ops

Options
  Standard options, see Standard Command Line Options

Subsp
  Subspace to clean with.

Mat
  Matrix to be cleaned.

CleanedMat
  Cleaned Matrix.

Ops
  Row operations.

## Input Files

Subsp
  Subspace to clean with, a N⨯M matrix in echelon form.

Mat
  Matrix to be cleaned (L⨯M).

## Output Files

CleanedMat
  Cleaned matrix (L⨯M).

Ops
  Row operations (L⨯N).

## Description

This program "cleans" Mat with Subsp, i.e., it adds suitable linear combinations of rows of Subsp to each row of Mat such that all pivot columns in the result are zero. It writes two matrices to CleanedMat and Ops such that Mat = Ops⋅Subsp + CleanedMat. If Subsp is not in echelon form, it is first reduced to echelon form, and the previous equation holds for the reduced Matrix. Subsp and Mat must be over the same field and have the same number of columns.

One use of this program is to calculate the action of a generator on an invariant subspace: Take the subspace in echelon form (as it is on output from zsp), and multiply it by a generator. Cleaning the result with the original basis yields a zero matrix, and RowOps is the action of the generator on the invariant subspace. For example, if `subsp` is the subspace and `gen` is the generator,

    # zmu subsp gen image
    # zcl subsp image null gen_s

calculates the action on the subspace in `gen_s`.

The action on the quotient of a given subspace can be calculated with the zqt program.

## Implementation Details

The subspace is loaded into memory and, if necessary, reduced to echelon form. The second matrix, is then processed a row at a time. Row operations are performed to clear out the pivot points of the input row using the rows of the first input matrix. A row describing what was done is written out to Ops, and the remnant (clean) row is output to CleanedMat.