Dear Forum:
Has anyone written a function which reduces integer matrices modulo
primes ?
For example, here are 5 generators for Sp(4, Z):
tw1 := [ [ 1, 0, 0, 0 ], [ 1, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ]; tw2 := [ [ 1,-1, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ]; tw3 := [ [1, 0, 0, 0 ], [1, 1,-1, 0 ], [0, 0, 1, 0 ], [-1, 0,1, 1 ] ]; tw4 := [ [1, 0, 0, 0 ], [0, 1, 0, 0 ], [0, 0, 1, -1], [0, 0, 0, 1] ]; tw5 := [ [1, 0, 0, 0 ], [0, 1, 0, 0 ], [0, 0, 1, 0 ], [0, 0, 1, 1 ] ]; (As a matter of fact they correspond to the images in Sp(4, Z) of the
standard generators for the genus 2 mapping class group. But I
digress.)
It would be nice to have a built in function Reduce( , )
with the following behaviour:
a)It should only be defined for prime values of the second variable.
b) Reduce( n, p) yields n*Z(p)^0, if n is an integer.
c) Reduce(a/b, p) yields a * ( b*Z(p)^0 )^(-1), if b is coprime to p.
d) Reduce should also apply to vectors and matrices with rational
entries, to functions that return vectors and matrices with rational
entries, and so on.
I'd be very interested if anyone has already written a function with
some of this behaviour.
One could imagine extending Reduce still further to cyclotomic
fields, but then one would have to make some decisions about how to
deal with ramification.
Sincerely,
Geoffrey Mess