1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %A matint.xml GAP documentation Alexander Hulpke -->
<!-- %A Thomas Breuer -->
<!-- %A Rob Wainwright -->
<!-- %% -->
<!-- %% -->
<!-- %Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland -->
<!-- %Y Copyright (C) 2002 The GAP Group -->
<!-- %% -->
<Chapter Label="Integral matrices and lattices">
<Heading>Integral matrices and lattices</Heading>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Linear equations over the integers and Integral Matrices">
<Heading>Linear equations over the integers and Integral Matrices</Heading>
<#Include Label="NullspaceIntMat">
<#Include Label="SolutionIntMat">
<#Include Label="SolutionNullspaceIntMat">
<#Include Label="BaseIntMat">
<#Include Label="BaseIntersectionIntMats">
<#Include Label="ComplementIntMat">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Normal Forms over the Integers">
<Heading>Normal Forms over the Integers</Heading>
This section describes the computation of the Hermite and Smith normal form
of integer matrices.
<P/>
The Hermite Normal Form (HNF) <M>H</M> of an integer matrix <M>A</M> is
a row equivalent upper triangular form such that all off-diagonal entries
are reduced modulo the diagonal entry of the column they are in.
There exists a unique unimodular matrix <M>Q</M> such that <M>Q A = H</M>.
<P/>
The Smith Normal Form <M>S</M> of an integer matrix <M>A</M> is
the unique equivalent diagonal form with <M>S_i</M> dividing <M>S_j</M> for
<M>i < j</M>.
There exist unimodular integer matrices <M>P, Q</M> such that <M>P A Q = S</M>.
<P/>
All routines described in this section build on the <Q>workhorse</Q> routine
<Ref Func="NormalFormIntMat"/>.
<#Include Label="TriangulizedIntegerMat">
<#Include Label="TriangulizedIntegerMatTransform">
<#Include Label="TriangulizeIntegerMat">
<#Include Label="HermiteNormalFormIntegerMat">
<#Include Label="HermiteNormalFormIntegerMatTransform">
<#Include Label="SmithNormalFormIntegerMat">
<#Include Label="SmithNormalFormIntegerMatTransforms">
<#Include Label="DiagonalizeIntMat">
<#Include Label="NormalFormIntMat">
<#Include Label="AbelianInvariantsOfList">
<!-- %\ Declaration{DiagonalizeIntMatNormDriven} -->
<!-- %\ Declaration{SNFNormDriven} -->
<!-- %\ Declaration{SNFofREF} -->
<!-- %\ Declaration{HNFNormDriven} -->
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Determinant of an integer matrix">
<Heading>Determinant of an integer matrix</Heading>
<#Include Label="DeterminantIntMat">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Decompositions">
<Heading>Decompositions</Heading>
<#Include Label="[1]{zlattice}">
<#Include Label="Decomposition">
<#Include Label="LinearIndependentColumns">
<#Include Label="PadicCoefficients">
<#Include Label="IntegralizedMat">
<#Include Label="DecompositionInt">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Lattice Reduction">
<Heading>Lattice Reduction</Heading>
<#Include Label="LLLReducedBasis">
<#Include Label="LLLReducedGramMat">
</Section>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Orthogonal Embeddings">
<Heading>Orthogonal Embeddings</Heading>
<#Include Label="OrthogonalEmbeddings">
<#Include Label="ShortestVectors">
</Section>
</Chapter>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %E -->
|