# 50.40 DnLattice

`DnLattice( tbl, grammat, reducibles )`

tries to find sublattices isomorphic to root lattices of type D_n (for n geq 5 or n = 4) in a lattice that is generated by the norm 2 characters reducibles, which must be characters of the table tbl. grammat must be the matrix of scalar products of reducibles, i.e., the Gram matrix of the lattice.

`DnLattice` is able to find irreducible characters if there is a lattice with n>4. In the case n = 4 `DnLattice` only in some cases finds irreducibles.

`DnLattice` returns a record with components

`irreducibles`:

the list of found irreducible characters,

`remainders`:

the list of remaining reducible characters, and

`gram`:

the Gram matrix of the characters in `remainders`.

The remaining reducible characters are transformed into a normalized form, so that the lattice-structure is cleared up for further treatment. So `DnLattice` might be useful even if it fails to find irreducible characters.

```    gap> tbl:= CharTable( "Symmetric", 4 );;
gap> y1:=[ [ 2, 0, 2, 2, 0 ], [ 4, 0, 0, 1, 2 ], [ 5, -1, 1, -1, 1 ],
>          [ -1, 1, 3, -1, -1 ] ];;
gap> g1:= MatScalarProducts( tbl, y1, y1 );
[ [ 2, 1, 0, 0 ], [ 1, 2, 1, -1 ], [ 0, 1, 2, 0 ], [ 0, -1, 0, 2 ] ]
gap> e:= DnLattice( tbl, g1, y1 );
rec(
gram := [  ],
remainders := [  ],
irreducibles :=
[ [ 2, 0, 2, -1, 0 ], [ 1, -1, 1, 1, -1 ], [ 1, 1, 1, 1, 1 ],
[ 3, -1, -1, 0, 1 ] ] )```

`DnLatticeIterative( tbl, arec )`

was made for iterative use of `DnLattice`. arec must be either a list of characters of the table tbl, or a record with components

`remainders`:

a list of characters of the character table tbl, and

`norms`:

the norms of the characters in `remainders`,

e.g., a record returned by LLL `LLL`. `DnLatticeIterative` will select the characters of norm 2, call `DnLattice`, reduce the characters with found irreducibles, call `DnLattice` for the remaining characters, and so on, until no new irreducibles are found.

`DnLatticeIterative` returns (like LLL `LLL`) a record with components

`irreducibles`:

the list of found irreducible characters,

`remainders`:

the list of remaining reducible characters, and

`norms`:

the list of norms of the characters in `remainders`.

```    gap> tbl:= CharTable( "Symmetric", 4 );;
gap> y1:= [ [ 2, 0, 2, 2, 0 ], [ 4, 0, 0, 1, 2 ],
>   [ 5, -1, 1, -1, 1 ], [ -1, 1, 3, -1, -1 ], [ 6, -2, 2, 0, 0 ] ];;
gap> DnLatticeIterative( tbl, y1);
rec(
irreducibles :=
[ [ 2, 0, 2, -1, 0 ], [ 1, -1, 1, 1, -1 ], [ 1, 1, 1, 1, 1 ],
[ 3, -1, -1, 0, 1 ] ],
remainders := [  ],
norms := [  ] )```

GAP 3.4.4
April 1997