Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

If I adapt the problem to the comment, it is possible to use integer points in polyhedra. First, one creates the polyhedron of partitions with parts \geq 2 in chamber. Then, one fixes the sum of the parts to be N in the coord_sum. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum.

For d=1 I get:

sage: for N in range(2,13): 
....:     chamber = Polyhedron(rays=[[0]*_+[2]*(N-_) for _ in range(N)],backend='normaliz') 
....:     coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz') 
....:     start_partitions = (chamber & coord_sum).integral_points() 
....:     d = 1 
....:     for p in start_partitions: 
....:         non_zero = [_ for _ in p if _ > 0] 
....:         if sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1: 
....:             print(p) 
....:                                                                                                                                                                                                              
(0, 0, 0, 0, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)

If my code is not correct, one may still modify it to get the proper definition of admissibility...

If I adapt the problem to the comment, it is possible to use integer points in polyhedra. First, one creates the polyhedron of partitions with parts \geq 2 in chamber. Then, one fixes the sum of the parts to be N in the coord_sum. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum.sum and the minimal part.

For d=1 I get:

sage: for N in range(2,13): 
....:     chamber = Polyhedron(rays=[[0]*_+[2]*(N-_) Polyhedron(rays=[[0]*_+[1]*(N-_) for _ in range(N)],backend='normaliz') 
....:     coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz') 
....:     start_partitions = (chamber & coord_sum).integral_points() 
....:     d = 1 
....:     for p in start_partitions: 
....:         non_zero = [_ for _ in p if _ > 0] 
....:         if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1: 
....:             print(p) 
....:                                                                                                                                                                                                              
(0, 0, 0, 0, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 6)
(0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 3)
(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2)

If my code is not correct, one may still modify it to get the proper definition of admissibility...

If I adapt the problem to the comment, it is possible to use integer points in polyhedra. First, one creates the polyhedron of partitions in chamber. Then, one fixes the sum of the parts to be N in the coord_sum. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum and the minimal part.

For d=1 I get:

sage: d = 1 
....: adm_part = set() 
....: for k in range(2,2*(d+1)+1): 
....:     chamber = Polyhedron(rays=[[0]*_+[1]*(k-_) for _ in range(k)],backend='normaliz') 
....:     for N in range(2,13): 
....:     chamber = Polyhedron(rays=[[0]*_+[1]*(N-_) for _ in range(N)],backend='normaliz') 
....: range(2*k,25): 
....:         coord_sum = Polyhedron(eqns=[[-N]+[1]*N],backend='normaliz') 
....: Polyhedron(eqns=[[-N]+[1]*k],backend='normaliz') 
....:         start_partitions = (chamber & coord_sum).integral_points() 
....:     d = 1 
....:     for p in start_partitions: 
....:          non_zero = [_ tuple([_ for _ in p if _ > 0] 
....: 0]) 
....:             if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1: 
....:             print(p) 
....:                                                                                                                                                                                                              
(0, 0, 0, 0, 2,     if non_zero not in adm_part: 
....:                     adm_part.add(non_zero) 
....:                     print(non_zero) 
....:                                                                                                                                                                                                              
(3, 3, 3)
(2, 4, 4)
(2, 3, 6)
(2, 2, 2, 2)
(0, 0, 0, 0, 0, 0, 3, 3, 3)
(0, 0, 0, 0, 0, 0, 0, 2, 4, 4)
(0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 6)

If my code is not correct, one may still modify it to get the proper definition of admissibility...

If I adapt the problem to the comment, it is possible to use integer points in polyhedra. First, one creates the polyhedron of partitions in chamber. Then, one fixes the sum of the parts to be N in the coord_sum. Taking the intersection and then the integral points, we get at least the potential partitions. Then, one can iterate to test the inverse sum and the minimal part.

For d=1 I get:

sage: d = 1 
....: bound = 25
....: adm_part = set() 
....: for k in range(2,2*(d+1)+1): 
....:     chamber = Polyhedron(rays=[[0]*_+[1]*(k-_) for _ in range(k)],backend='normaliz') 
....:     for N in range(2*k,25): range(2*k,bound): 
....:         coord_sum = Polyhedron(eqns=[[-N]+[1]*k],backend='normaliz') 
....:         start_partitions = (chamber & coord_sum).integral_points() 
....:         for p in start_partitions: 
....:             non_zero = tuple([_ for _ in p if _ > 0]) 
....:             if min(non_zero) >= 2 and sum([1/_ for _ in non_zero]) == len(non_zero) - d - 1: 
....:                 if non_zero not in adm_part: 
....:                     adm_part.add(non_zero) 
....:                     print(non_zero) 
....:                                                                                                                                                                                                              
(3, 3, 3)
(2, 4, 4)
(2, 3, 6)
(2, 2, 2, 2)

If my code is not correct, one may still modify it to get the proper definition of admissibility...