# NumberFieldIntegralBasis(UP, F)ΒΆ

In this package `F` is a framed algebra over the integers (typically `F = Z[a]` for some algebraic integer a). The package provides functions to compute the integral closure of `Z` in the quotient field of `F`.

discriminant: () -> Integer

`discriminant()` returns the discriminant of the integral closure of `Z` in the quotient field of the framed algebra `F`.

integralBasis: () -> Record(basis: Matrix Integer, basisDen: Integer, basisInv: Matrix Integer)

`integralBasis()` returns a record `[basis, basisDen, basisInv]` containing information regarding the integral closure of `Z` in the quotient field of `F`, where `F` is a framed algebra with `Z`-module basis `w1, w2, ..., wn`. If `basis` is the matrix `(aij, i = 1..n, j = 1..n)`, then the `i`th element of the integral basis is `vi = (1/basisDen) * sum(aij * wj, j = 1..n)`, i.e. the `i`th row of `basis` contains the coordinates of the `i`th basis vector. Similarly, the `i`th row of the matrix `basisInv` contains the coordinates of `wi` with respect to the basis `v1, ..., vn`: if `basisInv` is the matrix `(bij, i = 1..n, j = 1..n)`, then `wi = sum(bij * vj, j = 1..n)`.

localIntegralBasis: Integer -> Record(basis: Matrix Integer, basisDen: Integer, basisInv: Matrix Integer)

`integralBasis(p)` returns a record `[basis, basisDen, basisInv]` containing information regarding the local integral closure of `Z` at the prime `p` in the quotient field of `F`, where `F` is a framed algebra with `Z`-module basis `w1, w2, ..., wn`. If `basis` is the matrix `(aij, i = 1..n, j = 1..n)`, then the `i`th element of the integral basis is `vi = (1/basisDen) * sum(aij * wj, j = 1..n)`, i.e. the `i`th row of `basis` contains the coordinates of the `i`th basis vector. Similarly, the `i`th row of the matrix `basisInv` contains the coordinates of `wi` with respect to the basis `v1, ..., vn`: if `basisInv` is the matrix `(bij, i = 1..n, j = 1..n)`, then `wi = sum(bij * vj, j = 1..n)`.