oalg-abg-1.0.0.0: Finitely generated abelian groups.
Copyright(c) Erich Gut
LicenseBSD3
Maintainerzerich.gut@gmail.com
Safe HaskellSafe-Inferred
LanguageHaskell2010

OAlg.AbelianGroup.Free.SmithNormalForm

Description

diagonal and Smith Normal Form for Z-matrices.

Synopsis

Diagonal Form

zmxDiagonalForm :: Matrix Z -> DiagonalForm Z Source #

transforming a matrix over Z to a diagonal matrix by applying elements of GLT Z.

Smith Normal Form

smithNormalForm :: Matrix Z -> SmithNormalForm Z Source #

Smith Normal Form of a matrix.

Property Let m be in Matrix Z and 'SmithNormalForm o ds a b = smithNormalForm m, then holds: (a *> m) <* b == diagonal (rows m) (cols m) ds where ds = (takeN o $ repeat 1) ++ ds'.

smithNormalForm' :: DiagonalFormStrictPositive Z -> SmithNormalForm Z Source #

Smith Normal Form of a diagonal matrix over Z with strict positive entries.

Property Let d = DiagonalFormStrictPositive d' (DiagonalForm ds a b) be in DiagonalFormStrictPositive Z, m = dgfMatrix d' and s = smithNormalForm' d, then holds: m == dgfMatrix (snfDiagonalForm s).

zmxDiagonalFormStrictPositive :: Matrix Z -> DiagonalFormStrictPositive Z Source #

transforming a matrix over Z to a diagonal matrix with strict positive entries by applying elements of GLT Z.

Property Let m be in Matrix Z and DiagonalFormStrictPositive d = zmxDiagonalFormStrictPositive m, then holds: (a *> m) <* b == diagonal (rows m) (cols m) ds where DiagonalForm ds a b = d.

Note The entries of the diagonal may not be successively divisible, as such it is a pre-form of the Smith Normal Form.

data SmithNormalForm k Source #

the smith normal form.

Properties Let s = SmithNormalForm o ds a b be in SmithNormalForm Z, then holds:

  1. snfDiagonalForm s is valid.
  2. For all k in ks holds: 0 < k.
  3. For all ..k:k'.. in ks holds: mod k' k == 0.

Constructors

SmithNormalForm N [k] (RowTrafo k) (ColTrafo k) 

snfDiagonalForm :: Semiring k => SmithNormalForm k -> DiagonalForm k Source #

the underlying diagonal form.

Proposition

prpDiagonalFormZ :: N -> Q -> Statement Source #

validating diagonal and Smith Normal form for Z-matrices.