[PPL-devel] [GIT] ppl/ppl(termination): Completed fill_constraint_system_PR().
Roberto Bagnara
bagnara at cs.unipr.it
Wed Mar 17 15:49:36 CET 2010
Module: ppl/ppl
Branch: termination
Commit: d6ba16bc72f64aae8474331a12a839dbbb06d859
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=d6ba16bc72f64aae8474331a12a839dbbb06d859
Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date: Wed Mar 17 18:46:27 2010 +0400
Completed fill_constraint_system_PR().
---
src/termination.cc | 4 ++
src/termination.templates.hh | 2 +-
tests/Polyhedron/termination1.cc | 60 ++++++++++++++++++++++++++++++++++++++
3 files changed, 65 insertions(+), 1 deletions(-)
diff --git a/src/termination.cc b/src/termination.cc
index 4e0a710..2a8f96e 100644
--- a/src/termination.cc
+++ b/src/termination.cc
@@ -323,6 +323,10 @@ fill_constraint_system_PR(const Constraint_System& cs_before,
le_out += c_i.inhomogeneous_term()*Variable(row_index);
}
+ // Add the nonpositivity constraints for u_1, u_2 and u_3.
+ for (dimension_type i = s + 2*r; i-- > 0; )
+ cs_out.insert(Variable(i) <= 0);
+
// FIXME: iterate backwards once the debuggin phase is over.
//for (dimension_type j = 2*n; j-- > 0; )
for (dimension_type j = 0; j < 2*n; ++j)
diff --git a/src/termination.templates.hh b/src/termination.templates.hh
index 247a587..d352a72 100644
--- a/src/termination.templates.hh
+++ b/src/termination.templates.hh
@@ -28,7 +28,7 @@ site: http://www.cs.unipr.it/ppl/ . */
#include "BD_Shape.defs.hh"
#include "Octagonal_Shape.defs.hh"
-#define PRINT_DEBUG_INFO 0
+#define PRINT_DEBUG_INFO 1
#if PRINT_DEBUG_INFO
#include <iostream>
diff --git a/tests/Polyhedron/termination1.cc b/tests/Polyhedron/termination1.cc
index e169729..92a902b 100644
--- a/tests/Polyhedron/termination1.cc
+++ b/tests/Polyhedron/termination1.cc
@@ -364,6 +364,62 @@ test14() {
}
+bool
+test15() {
+ Variable xp1(0);
+ Variable x1(1);
+ C_Polyhedron ph(2);
+ ph.add_constraint(x1 >= 3);
+ ph.add_constraint(xp1 >= 1);
+
+ return !termination_test_MS(ph);
+}
+
+bool
+test16() {
+ Variable xp1(0);
+ Variable x1(1);
+ C_Polyhedron ph(2);
+ ph.add_constraint(x1 >= 3);
+ ph.add_constraint(xp1 >= 1);
+
+ return !termination_test_PR(ph);
+}
+
+bool
+test17() {
+ Variable xp1(0);
+ Variable xp2(1);
+ Variable x1(2);
+ Variable x2(3);
+ C_Polyhedron ph(4);
+ ph.add_constraint(x1 >= 1);
+ ph.add_constraint(x2 >= 1);
+ ph.add_constraint(x1 - x2 <= -1);
+ ph.add_constraint(xp1 >= 1);
+ ph.add_constraint(xp2 >= 1);
+ ph.add_constraint(x1 == xp1);
+
+ return !termination_test_MS(ph);
+}
+
+bool
+test18() {
+ Variable xp1(0);
+ Variable xp2(1);
+ Variable x1(2);
+ Variable x2(3);
+ C_Polyhedron ph(4);
+ ph.add_constraint(x1 >= 1);
+ ph.add_constraint(x2 >= 1);
+ ph.add_constraint(x1 - x2 <= -1);
+ ph.add_constraint(xp1 >= 1);
+ ph.add_constraint(xp2 >= 1);
+ ph.add_constraint(x1 == xp1);
+
+ return !termination_test_PR(ph);
+}
+
} // namespace
BEGIN_MAIN
@@ -381,4 +437,8 @@ BEGIN_MAIN
DO_TEST(test12);
DO_TEST(test13);
DO_TEST(test14);
+ DO_TEST(test15);
+ DO_TEST(test16);
+ DO_TEST(test17);
+ DO_TEST(test18);
END_MAIN
More information about the PPL-devel
mailing list