Interface to 4ti2#

https://4ti2.github.io/

You must have the 4ti2 Sage package installed on your computer for this interface to work.

Use sage -i 4ti2 to install the package.

AUTHORS:

  • Mike Hansen (2009): Initial version.

  • Bjarke Hammersholt Roune (2009-06-26): Added Groebner, made code usable as part of the Sage library and added documentation and some doctests.

  • Marshall Hampton (2011): Minor fixes to documentation.

class sage.interfaces.four_ti_2.FourTi2(directory=None)#

Bases: object

An interface to the program 4ti2.

Each 4ti2 command is exposed as a method of this class.

call(command, project, verbose, options=True)#

Run the 4ti2 program command on the project named project in the directory directory().

INPUT:

  • command – The 4ti2 program to run.

  • project – The file name of the project to run on.

  • verbose – Display the output of 4ti2 if True.

  • options – A list of strings to pass to the program.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_matrix([[6,10,15]], "test_file")
sage: four_ti_2.call("groebner", "test_file", False)  # optional - 4ti2
sage: four_ti_2.read_matrix("test_file.gro")  # optional - 4ti2
[-5  0  2]
[-5  3  0]
circuits(mat=None, project=None)#

Run the 4ti2 program circuits on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.circuits([1,2,3])  # optional - 4ti2
[ 0  3 -2]
[ 2 -1  0]
[ 3  0 -1]
directory()#

Return the directory where the input files for 4ti2 are written by Sage and where 4ti2 is run.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import FourTi2
sage: f = FourTi2("/tmp/")
sage: f.directory()
'/tmp/'
graver(mat=None, lat=None, project=None)#

Run the 4ti2 program graver on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.graver([1,2,3])  # optional - 4ti2
[ 2 -1  0]
[ 3  0 -1]
[ 1  1 -1]
[ 1 -2  1]
[ 0  3 -2]
sage: four_ti_2.graver(lat=[[1,2,3],[1,1,1]])  # optional - 4ti2
[ 1  0 -1]
[ 0  1  2]
[ 1  1  1]
[ 2  1  0]
groebner(mat=None, lat=None, project=None)#

Run the 4ti2 program groebner on the parameters.

This computes a toric Groebner basis of a matrix.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: A = [6,10,15]
sage: four_ti_2.groebner(A)  # optional - 4ti2
[-5  0  2]
[-5  3  0]
sage: four_ti_2.groebner(lat=[[1,2,3],[1,1,1]])  # optional - 4ti2
[-1  0  1]
[ 2  1  0]
hilbert(mat=None, lat=None, project=None)#

Run the 4ti2 program hilbert on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.hilbert(four_ti_2._magic3x3())  # optional - 4ti2
[2 0 1 0 1 2 1 2 0]
[1 0 2 2 1 0 0 2 1]
[0 2 1 2 1 0 1 0 2]
[1 2 0 0 1 2 2 0 1]
[1 1 1 1 1 1 1 1 1]
sage: four_ti_2.hilbert(lat=[[1,2,3],[1,1,1]])  # optional - 4ti2
[2 1 0]
[0 1 2]
[1 1 1]
minimize(mat=None, lat=None)#

Run the 4ti2 program minimize on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.minimize()  # optional - 4ti2
Traceback (most recent call last):
...
NotImplementedError: 4ti2 command 'minimize' not implemented in Sage.
ppi(n)#

Run the 4ti2 program ppi on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.ppi(3)  # optional - 4ti2
[-2  1  0]
[ 0 -3  2]
[-1 -1  1]
[-3  0  1]
[ 1 -2  1]
qsolve(mat=None, rel=None, sign=None, project=None)#

Run the 4ti2 program qsolve on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: A = [[1,1,1],[1,2,3]]
sage: four_ti_2.qsolve(A)  # optional - 4ti2
[[], [ 1 -2  1]]
rays(mat=None, project=None)#

Run the 4ti2 program rays on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.rays(four_ti_2._magic3x3())  # optional - 4ti2
[0 2 1 2 1 0 1 0 2]
[1 0 2 2 1 0 0 2 1]
[1 2 0 0 1 2 2 0 1]
[2 0 1 0 1 2 1 2 0]
read_matrix(filename)#

Read a matrix in 4ti2 format from the file filename in directory directory().

INPUT:

  • filename – The name of the file to read from.

OUTPUT:

The data from the file as a matrix over \(\ZZ\).

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_matrix([[1,2,3],[3,4,6]], "test_file")
sage: four_ti_2.read_matrix("test_file")
[1 2 3]
[3 4 6]
temp_project()#

Return an input project file name that has not been used yet.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.temp_project()
'project_...'
write_array(array, nrows, ncols, filename)#

Write the integer matrix array to the file filename in directory directory() in 4ti2 format.

The matrix must have nrows rows and ncols columns. It can be provided as a list of lists.

INPUT:

  • array – A matrix of integers. Can be represented as a list of lists.

  • nrows – The number of rows in array.

  • ncols – The number of columns in array.

  • file – A file name not including a path.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_array([[1,2,3],[3,4,5]], 2, 3, "test_file")
write_matrix(mat, filename)#

Write the matrix mat to the file filename in 4ti2 format.

INPUT:

  • mat – A matrix of integers or something that can be converted to that.

  • filename – A file name not including a path.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_matrix([[1,2],[3,4]], "test_file")
write_single_row(row, filename)#

Write the list row to the file filename in 4ti2 format as a matrix with one row.

INPUT:

  • row – A list of integers.

  • filename – A file name not including a path.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: four_ti_2.write_single_row([1,2,3,4], "test_file")
zsolve(mat=None, rel=None, rhs=None, sign=None, lat=None, project=None)#

Run the 4ti2 program zsolve on the parameters.

See 4ti2 website for details.

EXAMPLES:

sage: from sage.interfaces.four_ti_2 import four_ti_2
sage: A = [[1,1,1],[1,2,3]]
sage: rel = ['<', '<']
sage: rhs = [2, 3]
sage: sign = [1,0,1]
sage: four_ti_2.zsolve(A, rel, rhs, sign)  # optional - 4ti2
[
         [ 1 -1  0]
         [ 0 -1  0]
[0 0 1]  [ 0 -3  2]
[1 1 0]  [ 1 -2  1]
[0 1 0], [ 0 -2  1], []
]
sage: four_ti_2.zsolve(lat=[[1,2,3],[1,1,1]])  # optional - 4ti2
[
             [1 2 3]
[0 0 0], [], [1 1 1]
]