JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Smith Normal Form and the Structure Theorem

The engine room. Diagonalize the matrix xI - A over F[x] using only row and column operations — its diagonal entries are the invariant factors that decompose V completely.

The presentation matrix xI - A

Pick a basis and write T as a matrix A. The relations defining V as an F[x]-module are captured by the presentation matrix xI - A, a matrix whose entries are polynomials. This is the same xI - A whose determinant you computed for the characteristic polynomial — but now we keep the whole matrix, not just its determinant.

Smith normal form

Over the PID F[x] we are allowed to do elimination with both rows AND columns, where the 'pivots' are polynomials and we may multiply rows/columns by units (nonzero scalars). Driving xI - A to a diagonal matrix this way gives its Smith normal form: a diagonal of monic polynomials d1 | d2 | ... | dn, each dividing the next.

A = [ 2  -1 ]    Build xI - A over Q[x]:
    [ 1   0 ]

   xI - A = [ x-2    1   ]
            [ -1    x  ]

Row/column ops over Q[x] (swap, add poly multiples, scale by units):

  swap rows ->  [ -1     x   ]
                [ x-2    1   ]
  clear col 1 ->[ -1     x        ]
                [ 0    1 + x(x-2) ]
  normalize ->  [ 1    0       ]
                [ 0    x^2-2x+1 ]

Smith normal form:  diag( 1 ,  x^2 - 2x + 1 ) = diag( 1, (x-1)^2 ).
Reducing xI - A to Smith normal form by polynomial row and column operations.

Reading off the structure

The nonconstant diagonal entries are the invariant factors of V. The structure theorem for finitely generated modules over a PID then says V splits as a direct sum of cyclic modules F[x]/(d_i), one per invariant factor. (The constant 1's contribute trivial summands and are discarded.)

There are two flavors of the decomposition. Grouping by invariant factors d1 | d2 | ... gives the invariant-factor form; instead factoring each d_i into prime powers and collecting them gives the elementary divisors. Both encode the same module, just packaged differently.