First time here? Check out the FAQ!

Ask Your Question
3

non-negative integer relations on vertices

asked 9 years ago

Moon gravatar image

updated 2 years ago

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.

Preview: (hide)

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 ( 9 years ago )

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 ( 9 years ago )

2 Answers

Sort by » oldest newest most voted
2

answered 9 years ago

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.

Preview: (hide)
link
0

answered 9 years ago

vdelecroix gravatar image

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

Preview: (hide)
link

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: 9 years ago

Seen: 726 times

Last updated: Oct 08 '15