File: NNC_Polyhedron_test1.java

package info (click to toggle)
ppl 1%3A1.2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 44,328 kB
  • sloc: cpp: 212,085; sh: 12,176; makefile: 7,192; perl: 6,333; java: 2,220; ansic: 1,842; ml: 1,132; sed: 80
file content (123 lines) | stat: -rw-r--r-- 5,450 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* Test NNC_Polyhedron Java test class of the Parma Polyhedra Library Java
   interface.
   Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
   Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)

This file is part of the Parma Polyhedra Library (PPL).

The PPL is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

The PPL is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.

For the most up-to-date information see the Parma Polyhedra Library
site: http://bugseng.com/products/ppl/ . */

import parma_polyhedra_library.*;

public class NNC_Polyhedron_test1 {
    static {
        try {
            System.loadLibrary("ppl_java");
        }
        catch (UnsatisfiedLinkError  e) {
            System.out.println("Unable to load the library");
            System.out.println(e.getMessage());
            System.exit(-1);
        }
    }

    public static boolean test01() {
        Variable X = new Variable(0);
        Variable Y = new Variable(1);
        Variable Z = new Variable(2);
        NNC_Polyhedron ph = new NNC_Polyhedron(3, Degenerate_Element.UNIVERSE);
        Linear_Expression le_X = new Linear_Expression_Variable(X);
        Linear_Expression le_Y = new Linear_Expression_Variable(Y);
        Linear_Expression le_Z = new Linear_Expression_Variable(Z);
        Linear_Expression le_2Y = le_Y.times(new Coefficient(2));
        Linear_Expression le_5Z = le_Z.times(new Coefficient(5));
        Linear_Expression le_7
            = new Linear_Expression_Coefficient(new Coefficient(7));
        Linear_Expression le_5
            = new Linear_Expression_Coefficient(new Coefficient(5));
        Linear_Expression lhs1 = le_X.sum(le_2Y.sum(le_5Z));
        NNC_Polyhedron ph1
            = new NNC_Polyhedron(3, Degenerate_Element.UNIVERSE);
        ph1.add_constraint(new Constraint(lhs1,
                                          Relation_Symbol.GREATER_OR_EQUAL,
                                          le_7));
        ph1.add_constraint(new Constraint(le_X,
                                          Relation_Symbol.LESS_THAN,
                                          le_5Z));
        PPL_Test.println_if_noisy(ph1.constraints().toString());
        Constraint c = new Constraint(le_5Z,
                                      Relation_Symbol.GREATER_THAN,
                                      le_X);
        Poly_Con_Relation rel = ph1.relation_with(c);
        return rel.implies(Poly_Con_Relation.is_included());
    }

    public static boolean test02() {
        // Test if `minimized_constraints' returns an empty Constraint_System
        // if the Polyhedron is built from universe with a dimension greater
        // than zero.
        Variable X = new Variable(0);
        Variable Y = new Variable(1);
        Variable Z = new Variable(2);
        NNC_Polyhedron ph = new NNC_Polyhedron(3, Degenerate_Element.UNIVERSE);
        Constraint_System cs = ph.minimized_constraints();
        return cs.isEmpty();
    }

    public static boolean test03() {
        // Test termination methods.
        Variable X1 = new Variable(0);
        Variable X2 = new Variable(1);
        Variable XP1 = new Variable(2);
        Variable XP2 = new Variable(3);
        NNC_Polyhedron ph = new NNC_Polyhedron(4, Degenerate_Element.UNIVERSE);
        Coefficient coeff_1 = new Coefficient(1);
        Coefficient coeff_0 = new Coefficient(0);
        Linear_Expression le_X1 = new Linear_Expression_Variable(X1);
        Linear_Expression le_X2 = new Linear_Expression_Variable(X2);
        Linear_Expression le_XP1 = new Linear_Expression_Variable(XP1);
        Linear_Expression le_XP2 = new Linear_Expression_Variable(XP2);
        Linear_Expression le_1 = new Linear_Expression_Coefficient(coeff_1);
        Linear_Expression le_0 = new Linear_Expression_Coefficient(coeff_0);
        Linear_Expression le_X1_difference_XP1 = le_X1.sum(le_XP1);
        Constraint c_XP2_eq_1
          = new Constraint(le_XP2, Relation_Symbol.EQUAL, le_1);
        Constraint c_X1_geq_1
          = new Constraint(le_X1, Relation_Symbol.GREATER_OR_EQUAL, le_1);
        Constraint c_X1_minus_XP1_geq_1
          = new Constraint(le_X1_difference_XP1, Relation_Symbol.GREATER_OR_EQUAL, le_1);
        Constraint c_X2_leq_0
          = new Constraint(le_X2, Relation_Symbol.LESS_OR_EQUAL, le_0);
        ph.add_constraint(c_XP2_eq_1);
        ph.add_constraint(c_X1_geq_1);
        ph.add_constraint(c_X1_minus_XP1_geq_1);
        ph.add_constraint(c_X2_leq_0);
        return Termination.termination_test_MS_NNC_Polyhedron(ph);
    }

    public static void main(String[] args) {
        Parma_Polyhedra_Library.initialize_library();
        boolean test_result_ok =
            Test_Executor.executeTests(NNC_Polyhedron_test1.class);
        Parma_Polyhedra_Library.finalize_library();
        if (!test_result_ok)
            System.exit(1);
        System.exit(0);
    }

}