PolyhedralSets[ZPolyhedralSets]
IntegerPointDecomposition
decompose the integer points in a (parametric) ZPolyhedralSet
Calling Sequence
Parameters
Description
Examples
References
Compatibility
IntegerPointDecomposition(zpoly,output=value)
zpoly
-
ZPolyhedralSet
value
(optional) either latticeformat (default) or omegatestformat
IntegerPointDecomposition(zpoly) decomposes zpoly into pairwise disjoint Z-Polyhedral sets with additional algebraic properties that an arbitrary Z-polyhedron is unlikely to have. Those algebraic properties are specified in Definition 2 of the first reference listed below. They imply that such a Z-polyhedron, say zp, is consistent (that is, has at least one point) and is specializable. This latter property means that if x is the variable of lowest rank in zp and v is a possible value for x (that is, there exists at least one point of zp with v as x-coordinate) then all the points of zp with v as x-coordinate are given by specializing at x=v the system of linear inequalities defining zp.
The output option selects the return format. It can be given as:
output=latticeformat (the default). With this option, the Z-polyhedral sets constructed can use arbitrary lattices.
output=omegatestformat. With this option, Maple replaces the use of a lattice in each Z-polyhedron by using auxiliary variables, as in the Omega Test method of William Pugh; see the fourth reference below.
The algorithm behind IntegerPointDecomposition is described in the first two papers listed below and is inspired by the other three references.
Advanced problems can be found in the help page of ZPolyhedralSets. Those problems are taken from the literature (the fifth reference below) and illustrate the kind of applications that the command IntegerPointDecomposition can support. More elementary examples are shown below as well as in the help page of ZPolyhedralSet.
with⁡PolyhedralSets:
with⁡ZPolyhedralSets:
ineqs≔0≤−16+2⁢y+z,0≤−72+4⁢x+4⁢y+3⁢z,0≤2⁢y−z,0≤−24+4⁢x+4⁢y−3⁢z,0≤−4⁢x+4⁢y+3⁢z,0≤48−4⁢x+4⁢y−3⁢z,0≤48−4⁢x−4⁢y+3⁢z,0≤8−2⁢y+z,0≤−24+4⁢x−4⁢y+3⁢z,0≤24−2⁢y−z,0≤24+4⁢x−4⁢y−3⁢z,0≤96−4⁢x−4⁢y−3⁢z
L≔Lattice⁡Matrix⁡1,0,2,0,−1,1,0,0,2,Vector⁡0,0,1
L≔Lattice⁡1020−11002,001
vars≔x,y,z
zps≔ZPolyhedralSet⁡ineqs,vars,:-lattice=L
zps≔Relations:0≤2⁢y−z0≤−16+2⁢y+z0≤8−2⁢y+z0≤24−2⁢y−z0≤−4⁢x+4⁢y+3⁢z0≤−72+4⁢x+4⁢y+3⁢z0≤−24+4⁢x−4⁢y+3⁢z0≤−24+4⁢x+4⁢y−3⁢z0≤24+4⁢x−4⁢y−3⁢z0≤48−4⁢x−4⁢y+3⁢z0≤48−4⁢x+4⁢y−3⁢z0≤96−4⁢x−4⁢y−3⁢zVariables:x,y,zParameters:ParameterConstraints:Lattice:ZSpan1020−11002,,,001
res≔IntegerPointDecomposition⁡zps
res≔Relations:z≤9−z≤−7−2⁢y−z≤−16−2⁢y+z≤02⁢y−z≤82⁢y+z≤24−4⁢x−4⁢y−3⁢z≤−72−4⁢x−4⁢y+3⁢z≤−24−4⁢x+4⁢y−3⁢z≤−24−4⁢x+4⁢y+3⁢z≤244⁢x−4⁢y−3⁢z≤04⁢x−4⁢y+3⁢z≤484⁢x+4⁢y−3⁢z≤484⁢x+4⁢y+3⁢z≤96Variables:x,y,zParameters:ParameterConstraints:Lattice:ZSpan100010002,,,001,Relations:x=9y=6z=11Variables:x,y,zParameters:ParameterConstraints:Lattice:ZSpan001002,,,901,Relations:x=9y=6z=5Variables:x,y,zParameters:ParameterConstraints:Lattice:ZSpan001002,,,901
You can also choose output format as omegatestformat instead.
tt≔IntegerPointDecomposition⁡res1,output=omegatestformat
tt≔z=2⁢_Z3+1,2⁢_Z3≤8,−2⁢_Z3≤−6,−2⁢y−2⁢_Z3≤−15,−2⁢y+2⁢_Z3≤−1,2⁢y−2⁢_Z3≤9,2⁢y+2⁢_Z3≤23,−4⁢x−4⁢y−6⁢_Z3≤−69,−4⁢x−4⁢y+6⁢_Z3≤−27,−4⁢x+4⁢y−6⁢_Z3≤−21,−4⁢x+4⁢y+6⁢_Z3≤21,4⁢x−4⁢y−6⁢_Z3≤3,4⁢x−4⁢y+6⁢_Z3≤45,4⁢x+4⁢y−6⁢_Z3≤51,4⁢x+4⁢y+6⁢_Z3≤93,z,_Z3,x,y
res_omegatestformat≔IntegerPointDecomposition⁡zps,output=omegatestformat
res_omegatestformat≔z=2⁢_Z3+1,2⁢_Z3≤8,−2⁢_Z3≤−6,−2⁢y−2⁢_Z3≤−15,−2⁢y+2⁢_Z3≤−1,2⁢y−2⁢_Z3≤9,2⁢y+2⁢_Z3≤23,−4⁢x−4⁢y−6⁢_Z3≤−69,−4⁢x−4⁢y+6⁢_Z3≤−27,−4⁢x+4⁢y−6⁢_Z3≤−21,−4⁢x+4⁢y+6⁢_Z3≤21,4⁢x−4⁢y−6⁢_Z3≤3,4⁢x−4⁢y+6⁢_Z3≤45,4⁢x+4⁢y−6⁢_Z3≤51,4⁢x+4⁢y+6⁢_Z3≤93,z,_Z3,x,y,y=6,x=9,z=5,y,x,z,,y=6,x=9,z=11,y,x,z,
Rui-Juan Jing and Marc Moreno Maza. "Computing the Integer Points of a Polyhedron, I: Algorithm." Proceedings of CASC 2017: 225-241, Springer.
Rui-Juan Jing and Marc Moreno Maza. "Computing the Integer Points of a Polyhedron, II: Complexity Estimates." Proceedings of CASC 2017: 242-256, Springer.
Rachid Seghir, Vincent Loechner, and Benoı̂t Meister. "Integer affine transformations of parametric Z-polytopes and applications to loop nest optimization." Proceedings of TACO, Vol. 9(2):8:1–8:27, 2012.
William Pugh. "The omega test: a fast and practical integer programming algorithm for dependence analysis." Proceedings Supercomputing ’91, pp 4–13. ACM, 1991.
William Pugh. "Counting solutions to presburger formulas: How and why." Proceedings of PLDI, pp 121–134. ACM, 1994.
The PolyhedralSets:-ZPolyhedralSets:-IntegerPointDecomposition command was introduced in Maple 2023.
For more information on Maple 2023 changes, see Updates in Maple 2023.
See Also
ZPolyhedralSets:-IsEmpty
ZPolyhedralSets:-IsIntegerPointOf
ZPolyhedralSets:-SamplePoint
ZPolyhedralSets:-EnumerateIntegerPoints
ZPolyhedralSets:-IsContained
ZPolyhedralSets:-ZPolyhedralSet
ZPolyhedralSets
PolyhedralSets
Download Help Document