[PPL-devel] Widening Operator

Enrico Oliosi enrico.oliosi at students.univr.it
Mon Aug 16 19:19:35 CEST 2004


> Dear Enrico,
>
> I assume you are working with PPL 0.5, and that by "[our] operator"
> you mean the BHRZ03 widening.  If so, notice that the widening proposed
> in the PhD thesis of Nicholas Halbwachs (which is a refinement of the
> one proposed by Patrick Cousot and Halbwachs himself in their POPL'78
> paper) is already present in the version of the library you have,
> where it is called H79.  So implementation of the Cousot & Halbwachs
> widening and extrapolation operators are provided by methods
>
>  void H79_widening_assign(const Polyhedron& y, unsigned* tp = 0);
>  void limited_H79_extrapolation_assign(const Polyhedron& y,
> 					const ConSys& cs,
> 					unsigned* tp = 0);
>  void bounded_H79_extrapolation_assign(const Polyhedron& y,
> 					const ConSys& cs,
> 					unsigned* tp = 0);
>
[...]
> Please, do not hesitate to come back to us if I have misunderstood
> your question.

Dear all,
yes I use PPL 0.5. I used exactly H79 widening operator, I have, i.e., 
two polyhedra:

ph1 :
-A - 2*B >= -6,
B >= 0,
A - 2*B >= 2.

ph2:
-A - 2*B >= -10,
B >= 0,
A - 2*B >= 2.

if I call the function ph1.H79_widening_assign(ph2) the result is
-A - 2*B >= -6,
B >= 0,
A - 2*B >= 2

which is the first one (ph1).
In the Cousot & Halbwachs's article the same example gives a different result:
B >= 0,
A - 2*B >= 2

Maybe I wrong something when I invoke these functions.

All the best,

     Enrico.



More information about the PPL-devel mailing list