# zbl man page

zbl — make lower triangular matrix keeping bottom left

## Synopsis

**zbl** [Options] *<Matrix> <Result>*

## Description

This program reads in *<Matrix>*, zeroizes all entries above the main diagonal, and writes out the result. For example:

Mat | Result |

12100201201212212122 | 10000000000000000000 |

21000000000000001111 | 21000000000000000000 |

12212120101201201201 | 12200000000000000000 |

01020010020102012012 | 01020000000000000000 |

12100012101201012012 | 12100000000000000000 |

12120212121012012012 | 12120200000000000000 |

Notice that the input matrix need not be square, and the output matrix always has the same dimensions as the input matrix.

If file names are omitted, the matrix is read from G1 and output goes to P2.

The purpose of this program is to enable the MeatAxe to check if an irreducible representation in characteristic 2 fixes a quadratic form. This job is not particularly simple — in many ways it is just a bodge, but it is possible:

- 1
- Put the representation into standard basis using zsp(1) in "standard basis" mode.
- 0[step].
- Find the symplectic form fixed by using zsp(1) to make the matrix that conjugates the representation to its dual.
- 0[step].
- Quadratic forms can be represented by lower triangular matrices. Since the representation is in standard basis (so all the basis vectors are images of the first under the group) the diagonal entries of any fixed quadratic form must all be equal, so try each field entry in turn by adding that scalar matrix to the bottom half of the symplectic form.
- 0[step].
- For each quadratic form Q made as in 3, test if it is fixed by forming G^TQG for each generator G, and checking that the diagonal is still the same as it was before (the symplectic form should have been checked before starting). The check can be done by adding the form to the result, then doing
**zbl**, ztr(1), and**zbl**again — the result will be the zero matrix (use znu(1)) iff the form was fixed (given that the symplectic one was).

## Options

**-Q**- Quiet, no messages.
**-V**- Verbose, more messages.
**-T***<MaxTime>*- Set CPU time limit

## Input Files

*Matrix*- Input matrix

## Output Files

*Result*- Output matrix.