Skip to content

Pseudo-matrices

This chapter deals with pseudo-matrices. We follow the common terminology and conventions introduced in [1], however, we operate on rows, not on columns.

Let R be a Dedekind domain, typically, the maximal order of some number field K, further fix some finite dimensional K-vectorspace V (with some basis), frequently Kn or the K-structure of some extension of K. Since in general R is not a PID, the R-modules in V are usually not free, but still projective.

Any finitely generated R-module MV can be represented as a pseudo-matrix PMat as follows: The structure theory of R-modules gives the existence of (fractional) R-ideals Ai and elements ωiV such that M=Aiωi and the sum is direct.

Following Cohen we call modules of the form Aω for some ideal A and ωV a pseudo element. A system (Ai,ωi) is called a pseudo-generating system for M if Aiωi|i=M. A pseudo-generating system is called a pseudo-basis if the ωi are K-linear independent.

A pseudo-matrix X is a tuple containing a vector of ideals Ai (1ir) and a matrix UKr×n. The i-th row together with the i-th ideal defines a pseudo-element, thus an R-module, all of them together generate a module M.

A pseudo-matrix X=((Ai)i,U) is said to be in pseudo-hnf if U is essentially upper triangular. Similar to the classical hnf, there is an algorithm that transforms any pseudo-matrix into one in pseudo-hnf while maintaining the module.

Creation

In general to create a PMat one has to specify a matrix and a vector of ideals:

pseudo_matrix Method
julia
pseudo_matrix(m::Generic.Mat{AbsSimpleNumFieldElem}, c::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> PMat{AbsSimpleNumFieldElem, AbsSimpleNumFieldOrderFractionalIdeal}

Returns the (row) pseudo matrix representing the Zk-module cimi where ci are the ideals in c and mi the rows of M.

source

pseudo_matrix Method
julia
pseudo_matrix(m::Generic.Mat{AbsSimpleNumFieldOrderElem}, c::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> PMat{AbsSimpleNumFieldElem, AbsSimpleNumFieldOrderFractionalIdeal}

Returns the (row) pseudo matrix representing the Zk-module cimi where ci are the ideals in c and mi the rows of M.

source

pseudo_matrix Method
julia
pseudo_matrix(m::Generic.Mat{AbsSimpleNumFieldOrderElem}) -> PMat{AbsSimpleNumFieldElem, AbsSimpleNumFieldOrderFractionalIdeal}

Returns the free (row) pseudo matrix representing the Zk-module Zkmi where mi are the rows of M.

source

(Those functions are also available as pseudo_matrix)

Operations

coefficient_ideals Method
julia
coefficient_ideals(M::PMat)

Returns the vector of coefficient ideals.

source

matrix Method
julia
matrix(M::PMat)

Returns the matrix part of the PMat.

source

base_ring Method
julia
base_ring(M::PMat)

The PMat M defines an R-module for some maximal order R. This function returns the R that was used to defined M.

source

pseudo_hnf Method
julia
pseudo_hnf(P::PMat)

Transforms P into pseudo-Hermite form as defined by Cohen. Essentially the matrix part of P will be upper triangular with some technical normalisation for the off-diagonal elements. This operation preserves the module.

A optional second argument can be specified as a symbols, indicating the desired shape of the echelon form. Possible are :upperright (the default) and :lowerleft

source

pseudo_hnf_with_transform Method
julia
pseudo_hnf_with_transform(P::PMat)

Transforms P into pseudo-Hermite form as defined by Cohen. Essentially the matrix part of P will be upper triangular with some technical normalisation for the off-diagonal elements. This operation preserves the module. The used transformation is returned as a second return value.

A optional second argument can be specified as a symbol, indicating the desired shape of the echelon form. Possible are :upperright (the default) and :lowerleft

source

Examples