Instead of multiplying a matrix C by M,
we shall just look at a single column, created randomly:
C:Matrix GR:=matrix([[random()$FR] for j in 1..4])
These can be multiplied directly in Axiom:
D:=M*C
Remarkably enough, Axiom can operate on matrices over a finite field as
easily as it can operate on numerical matrices. For example, given that
D=MC
it follows that
-1
C=M D
or that
-1
M D-C=0
To test this, first create the matrix inverse:
MI:=inverse(M)
Now multiply by D and subtract C. What does the result
tell you about the truth of the final equation?
To explore MixColumn a bit more, we shall look at the inverse of
M. First, here's a small function which converts from
a polynomial to an integer (treating the coefficients of the
polynomial as digits of a binary number):