# [PPL-devel] Opposing inequality to equality conversion.

Axel Simon Axel.Simon at ens.fr
Fri Feb 6 12:57:38 CET 2009

```On Feb 6, 2009, at 12:34, Roberto Bagnara wrote:

>
> Hello Axel.
>
> Axel Simon wrote:
>> I'm trying to verify a claim in Halbwachs' paper on factoring
>> polyhedra ("Some ways to reduce the space dimension in polyhedra
>> computations" is the journal version). Specifically, he claims
>> that omitting a common equality relation from the convex hull
>> computation yields not significant speedup. I've tried to run a
>> convex hull calculation, once with the common equalities added and
>> once with the common equalities omitted and found quite a
>> difference in performance.
>
> The difference is in favor of which technique?  (This is probably
> implicit
> in what you write afterward, but I would like to be sure.)

Sorry, I don't think I was as clear as I could have been. I'll try
again:

It's about calculating the convex hull using the double-description
method in PPL. Suppose you have two polyhedra described by the
inequality sets I_1 and I_2. Let x be a variable not occurring in I_1
nor I_2 and x=le an equality where le denotes a linear expression
over the variables in I_1 and I_2. He claims that:

calc_hull(I_1, I_2)

is not significantly faster than calculating

calc_hull(I_1 \cup \{ x=le \}, I_2 \cup \{ x=le \}).

This is what I'm trying to verify. However I'm adding the equality
x=le as two opposing inequalities x<=le and x>=le to the constraint
systems I_1 and I_2 before running PPL's convex hull operation.

>> However, I added the equality as two opposing inequalities. My
>> question: are the two opposing inequalities not immediately turned
>> into one equality by the Constraint class? If not, then this might
>> explain the speed difference I'm seeing.
>
> If I understand correctly, you are asking whether the
> Constraint_System
> class immediately turns two opposing inequalities into the
> corresponding
> equality.  The answer is negative.  This kind of simplification only
> happens (lazily) as part of the conversion/minimization process.

Ok, that is interesting. So I might observe a different performance
if I add the equality as x=le rather than as two opposing inequalities.

Thanks,
Axel.

```