up previous next
HilbertBasis

Hilbert basis for a monoid
Syntax

HilbertBasis(M:MAT): LIST

where M is a matrix over Z.


Description
This function returns a list whose components are lists (of non-negative integers) representing the Hilbert basis for the monoid of elements with non-negative coordinates in the kernel of M.

Example
  M := Mat([[1,-2,3,4], [1, 0, 0, -1]]);
  HilbertBasis(M);
[[0, 3, 2, 0], [1, 4, 1, 1], [2, 5, 0, 2]]
-------------------------------
  M * Transposed(Mat(It));
Mat([
  [0, 0, 0],
  [0, 0, 0]
])
-------------------------------