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 package org.sat4j;
31
32 import static org.junit.Assert.assertTrue;
33
34 import org.junit.Test;
35 import org.sat4j.core.VecInt;
36 import org.sat4j.minisat.SolverFactory;
37 import org.sat4j.minisat.core.DataStructureFactory;
38 import org.sat4j.minisat.core.IOrder;
39 import org.sat4j.minisat.core.Solver;
40 import org.sat4j.minisat.orders.SubsetVarOrder;
41 import org.sat4j.specs.ContradictionException;
42 import org.sat4j.specs.IVecInt;
43 import org.sat4j.specs.TimeoutException;
44
45 public class BugSAT50 {
46
47 @Test
48 public void test() throws ContradictionException, TimeoutException {
49 Solver<DataStructureFactory> solver = SolverFactory.newGlucose();
50 int[] backdoor = { 1, 2, 3 };
51 IOrder order = new SubsetVarOrder(backdoor);
52 solver.setOrder(order);
53 IVecInt clause = new VecInt();
54 clause.push(1).push(4);
55 solver.addClause(clause);
56 clause = new VecInt();
57 clause.push(2).push(5);
58 solver.addClause(clause);
59 clause = new VecInt();
60 clause.push(3).push(6);
61 solver.addClause(clause);
62 assertTrue(solver.isSatisfiable());
63 }
64
65 @Test
66 public void test2() throws ContradictionException, TimeoutException {
67 Solver<DataStructureFactory> solver = SolverFactory.newGlucose();
68 int[] backdoor = { 1, 2, 3 };
69 IOrder order = new SubsetVarOrder(backdoor);
70 solver.setOrder(order);
71 IVecInt clause = new VecInt();
72 clause.push(-1).push(4);
73 solver.addClause(clause);
74 clause = new VecInt();
75 clause.push(-2).push(5);
76 solver.addClause(clause);
77 clause = new VecInt();
78 clause.push(-3).push(6);
79 solver.addClause(clause);
80 assertTrue(solver.isSatisfiable());
81 }
82
83 @Test(expected = TimeoutException.class)
84 public void test3() throws ContradictionException, TimeoutException {
85 Solver<DataStructureFactory> solver = SolverFactory.newGlucose();
86 int[] backdoor = { 1, 2, 3 };
87 IOrder order = new SubsetVarOrder(backdoor);
88 solver.setOrder(order);
89 IVecInt clause = new VecInt();
90 clause.push(-1).push(4).push(7);
91 solver.addClause(clause);
92 clause = new VecInt();
93 clause.push(-2).push(5);
94 solver.addClause(clause);
95 clause = new VecInt();
96 clause.push(-3).push(6);
97 solver.addClause(clause);
98 solver.isSatisfiable();
99 }
100 }