Ask Your Question
3

non-negative integer relations on vertices

asked 2015-10-06 12:34:03 -0600

Moon gravatar image

updated 2015-10-07 11:17:58 -0600

tmonteil gravatar image

I would like to check whether there is a nonnegative integer relations between the vertices of my lattice polytope. Here is my code (I copied from sage math document):

vertices = [(1,1,-1,-1,-1),(-1,-1,1,1,-1),(1,-1,-1,-1,1),(-1,1,1,1,1),(1,-1,1,-1,-1)]
p = LatticePolytope(vertices)
print p.vertices_pc()
print lattice_polytope.positive_integer_relations(p.vertices_pc().column_matrix())

Obviously, the sum of the first four vectors is zero vector. However, sage returns an error:

TypeError: unable to make sense of Maxima expression '"Problemnotfeasible!"' in Sage

I would like to understand the reason. Is there some obvious thing I am missing? Interestingly, if I remove the last vertex from the list, then it gives the expected relation.

edit retag flag offensive close merge delete

Comments

I think that this is a bug. Sage sholud be trying to communicate that it cannot find the required relations (since Maxima returned "Problem not feasible!"). You can try looking at the source code for the integer relation function using lattice_polytope.positive_integer_relations?? (not sure if this will be of any help).

fidbc gravatar imagefidbc ( 2015-10-06 14:44:26 -0600 )edit

I've never even seen this error message coming from Maxima! I've opened http://trac.sagemath.org/ticket/19367 for that (not for the bug itself).

kcrisman gravatar imagekcrisman ( 2015-10-07 14:55:24 -0600 )edit

2 answers

Sort by ยป oldest newest most voted
2

answered 2015-10-07 11:17:30 -0600

tmonteil gravatar image

It looks like a bug, you can indeed find your nontrivial relation as follows:

sage: p.vertices().column_matrix().right_kernel()
Free module of degree 5 and rank 1 over Integer Ring
Echelon basis matrix:
[1 1 1 1 0]

It is now trac ticket 19365. Thanks for reporting.

edit flag offensive delete link more
0

answered 2015-10-07 21:05:42 -0600

Hello,

In the mean time you can use the following simple code

sage: M = matrix(vertices)
sage: nrows = M.nrows()
sage: ncols = M.ncols()
sage: eqns = [[0] + M[i,:].list() for i in range(nrows)]
sage: ieqs = [[0]*i + [1] + [0]*(ncols-i) for i in range(1,ncols+1)]
sage: [r.vector() for r in Polyhedron(eqns=eqns, ieqs=ieqs, base_ring=ZZ).rays()]
[(1, 0, 0, 1, 0)]

Vincent

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2015-10-06 12:34:03 -0600

Seen: 370 times

Last updated: Oct 07 '15