[PPL-devel] Equivalent dimensions

P M Hill hill at comp.leeds.ac.uk
Thu Jul 21 09:12:01 CEST 2005


On Wed, 20 Jul 2005, Mario Mendez wrote:

> Hi again,
>
> I wonder if there is any way (by using the API) to discover which dimensions 
> are equal. Right now, I inspect the constraint system looking for 1*X + -1 *Y 
> = 0, but that 'ad-hoc' solution simply does not look right. Can you help me? 
> Thanks!

Hi,

Inspecting the constraints is definitely not the right way to check if 
X=Y. There is no guarantee as to the exact form of a constraint system for 
the polyhedron returned to the user. So the constraint X = Y may be 
implied by the other constraints but not explicitly in the constraint 
system.

(Assuming Prolog, but the solution I think would be similar for the C or 
C++ API)

To see if the constraint X = Y is satisfied by all the points in a 
polyhedron, there is the predicate 
ppl_Polyhedron_relation_with_constraint/3

If Poly is your polyhedron and X, Y your dimensions, the query
ppl_Polyhedron_relation_with_constraint(Poly, X = Y, R).
will unify R with a list of relations one of which will be "included_in"
if and only if the constraint X = Y is satisfied by all the points in 
Poly.

With regards to your stated problem of finding _which_ dimensions are 
equal, I do not know of any way other than by checking all the pairs of 
dimensions X and Y and checking if X = Y holds using a method such as 
that given above.

Can you say what it is about your application that led to such a query?

Best wishes,
   Pat



More information about the PPL-devel mailing list