Ask Your Question

Find sphere points in a lattice

asked 2020-02-04 20:01:35 +0200

heluani gravatar image

updated 2020-02-04 22:50:02 +0200

Hello, say I have a lattice as in

Q = RootSystem('E8').weight_lattice()

with it's canonical bilinear form. How do I find the vectors $v$ such that $(v,v)=n$ for a positive integer $n$?

Edit: it would be even better if there's a way to get the points inside a cone, say the principal chamber in the above example.

edit retag flag offensive close merge delete


Could you explain what is meant by "canonical bilinear form", the one coming from the geometric representation?

This will affect how to give you a better answer.

jipilab gravatar imagejipilab ( 2020-02-07 18:52:55 +0200 )edit

The one coming from the Killing for on the Cartan algebra.

heluani gravatar imageheluani ( 2020-02-10 13:51:22 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-02-10 19:00:08 +0200

jipilab gravatar image

Here is a snippet of code that should do:

sage: Q = RootSystem('E8').weight_lattice()
sage: B = Q.basis()
sage: the_set = set()
sage: finished = False
sage: i = 1
sage: value = 4
sage: while not finished:
....:     smaller_or_eq_values = False
....:     int_vectors = IntegerVectors(n=i,k=8)
....:     for vect in int_vectors:
....:         weight = sum(vect[j]*B[j+1] for j in range(8)) # Create the weight
....:         wns = weight.norm_squared()
....:         if wns <= value:
....:             smaller_or_eq_values = True
....:             if wns == value:
....:                 print(weight)
....:                 the_set.add(weight)
....:     if not smaller_or_eq_values:
....:         finished = True
....:     i += 1

You will get a set the_set which above contains all the (positive) weights that have the norm squared to be equal to value=4.

The norm squared seem to deliver the same as the symmetric form:

sage: B[1]+B[2]
Lambda[1] + Lambda[2]
sage: a_weight = B[1]+B[2]
sage: a_weight.symmetric_form(a_weight)
sage: a_weight.norm_squared()
edit flag offensive delete link more


Thanks, that' works, but it's a bit less efficient that what I'm using now. This tests for all vectors in a box. You can use a ball which in higher dimensions is much smaller, and you can even account for the fact that in a root lattice case it's an ellipsoid. What I was wandering was if this was already implemented within Sage (which has the advantage of having precompiled cython code for example).

heluani gravatar imageheluani ( 2020-02-14 13:27:43 +0200 )edit

I see. If it is in Sage I would suspect that it is closer to the number theory and quadratic forms code, but I am not aware of it...

jipilab gravatar imagejipilab ( 2020-03-01 11:43:48 +0200 )edit

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


Asked: 2020-02-04 20:01:35 +0200

Seen: 298 times

Last updated: Feb 10 '20