Jacopo Mantovani wrote:
Qualche giorno fa ho scaricato e installato l'ultima (0.6.1) versione della PPL, e sto facendo qualche esperimento usando la sua interfaccia verso Sicstus Prolog. In particolare sono interessato agli operatori di rimozione di dimensioni:
1) ppl_Polyhedron_remove_higher_dimensions/2 2) ppl_Polyhedron_remove_dimensions/2
Tutto bene con il primo, meno con il secondo, che sembra non eliminare la variabile voluta e che mantiene quindi la dimensione del poliedro originale.
Puo' darsi che mi sbagli, ma per prudenza ho pensato di mandarvi questa mail e di allegare anche un piccolo programma cosicche' possiate riprodurre il mio 'esperimento'. L'output del programma allegato segue in fondo a questa mail. Spero possiate verificare se sia io a scrivere codice sbagliato o se non vi sia qualche sorta di bug nell'API verso Sicstus.
[...]
-- Using ppl_Polyhedron_remove_dimensions --
Constraints before: [1*A>=0,1*B>=0,-1*B>= -2,-1*A>= -2] Generators before: [point(2*A+2*B),point(2*A),point(2*B),point(0)] Dimension before: 2 Constraints after: [1*A>=0,1*B>=0,-1*B>= -2,-1*A>= -2] Generators after: [point(2*A+2*B),point(2*A),point(2*B),point(0)] Dimension after: 2 yes % source_info | ?-
Dear Jacopo, I reply to you in English because this is the official language of the list (in this particular case this is especially important because the main maintainer of the Prolog interface is Pat Hill). I have tried to reproduce the problem you observe, but I could not. I am using SICStus 3.11.1 because that is the only version I have at the moment, and the release 0.6.1 of the PPL: the same you use. Below the signature you can find the output I get. By the way: what is the "% source_info" string you have in your output? The first thing to do is the following: after compiling the PPL with `make', please run the regression tests with `make check' and see if you see any failure. Then come back to us and we will proceed from there. Ciao, Roberto P.S. I attach your test program again in case someone on this list has SICStus 3.10.0 handy. The attachment in your message was filtered out due to a misconfiguration of our mailing list software (just fixed). The attached program is identical to yours with the exception that it assumes the most common installation path (`/usr/local' instead of `/usr'). -- Prof. Roberto Bagnara Computer Science Group Department of Mathematics, University of Parma, Italy http://www.cs.unipr.it/~bagnara/ mailto:bagnara@cs.unipr.it $ sicstus SICStus 3.11.1 (x86-linux-glibc2.3): Fri Feb 20 18:38:25 CET 2004 Licensed to math.unipr.it | ?- compile(prova). % compiling /tmp/prova.pl... % compiling /usr/local/lib/ppl/ppl_sicstus.pl... % loading foreign resource /usr/local/lib/ppl/ppl_sicstus.so in module user % compiled /usr/local/lib/ppl/ppl_sicstus.pl in module user, 10 msec 16096 bytes % compiled /tmp/prova.pl in module user, 20 msec 21412 bytes yes | ?- init. PPL versione 0.6.1 This is the Parma Polyhedra Library (PPL) version 0.6.1. Copyright (C) 2001-2004 Roberto Bagnara <bagnara@cs.unipr.it>. The PPL is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by the GNU C++ compiler version 3.4.2. Report bugs to ppl-devel@cs.unipr.it. For the most up-to-date information see the Parma Polyhedra Library site: http://www.cs.unipr.it/ppl/ . -- Using ppl_Polyhedron_remove_higher_dimensions -- Constraints before: [1*A>=0,1*B>=0,-1*B>= -2,-1*A>= -2] Generators before: [point(2*A+2*B),point(2*A),point(2*B),point(0)] Dimension before: 2 Constraints after: [1*A>=0,-1*A>= -2] Generators after: [point(2*A),point(0)] Dimension after: 1 -- Using ppl_Polyhedron_remove_dimensions -- Constraints before: [1*A>=0,1*B>=0,-1*B>= -2,-1*A>= -2] Generators before: [point(2*A+2*B),point(2*A),point(2*B),point(0)] Dimension before: 2 Constraints after: [1*A>=0,-1*A>= -2] Generators after: [point(2*A),point(0)] Dimension after: 1 yes | ?-