Copyright | (c) Erich Gut |
---|---|
License | BSD3 |
Maintainer | zerich.gut@gmail.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
diagonal and Smith Normal Form for Z
-matrices.
Synopsis
- zmxDiagonalForm :: Matrix Z -> DiagonalForm Z
- smithNormalForm :: Matrix Z -> SmithNormalForm Z
- smithNormalForm' :: DiagonalFormStrictPositive Z -> SmithNormalForm Z
- zmxDiagonalFormStrictPositive :: Matrix Z -> DiagonalFormStrictPositive Z
- data SmithNormalForm k = SmithNormalForm N [k] (RowTrafo k) (ColTrafo k)
- snfDiagonalForm :: Semiring k => SmithNormalForm k -> DiagonalForm k
- prpDiagonalFormZ :: N -> Q -> Statement
Diagonal Form
zmxDiagonalForm :: Matrix Z -> DiagonalForm Z Source #
Smith Normal Form
smithNormalForm :: Matrix Z -> SmithNormalForm Z Source #
smithNormalForm' :: DiagonalFormStrictPositive Z -> SmithNormalForm Z Source #
Smith Normal Form of a diagonal matrix over Z
with strict positive entries.
Property Let d =
be in
DiagonalFormStrictPositive
d' (DiagonalForm
ds a b)
, DiagonalFormStrictPositive
Z
m =
and
dgfMatrix
d's =
, then holds: smithNormalForm'
dm
.==
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
and
Matrix
Z
, then holds:
DiagonalFormStrictPositive
d = zmxDiagonalFormStrictPositive
m(a
where *>
m) <*
b ==
diagonal
(rows
m) (cols
m) ds
.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 =
be in SmithNormalForm
o ds a b
,
then holds: SmithNormalForm
Z
issnfDiagonalForm
svalid
.- For all
k
inks
holds:0 < k
. - For all
..k
in:
k'..ks
holds:
.mod
k' k==
0
SmithNormalForm N [k] (RowTrafo k) (ColTrafo k) |
Instances
Oriented k => Show (SmithNormalForm k) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm showsPrec :: Int -> SmithNormalForm k -> ShowS # show :: SmithNormalForm k -> String # showList :: [SmithNormalForm k] -> ShowS # | |
Oriented k => Eq (SmithNormalForm k) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm (==) :: SmithNormalForm k -> SmithNormalForm k -> Bool # (/=) :: SmithNormalForm k -> SmithNormalForm k -> Bool # | |
Validable (SmithNormalForm Z) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm valid :: SmithNormalForm Z -> Statement # | |
Entity (SmithNormalForm Z) Source # | |
Defined in OAlg.AbelianGroup.Free.SmithNormalForm |
snfDiagonalForm :: Semiring k => SmithNormalForm k -> DiagonalForm k Source #
the underlying diagonal form.