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.minisat.core;
31
32 import org.junit.Test;
33 import org.sat4j.core.VecInt;
34 import org.sat4j.minisat.SolverFactory;
35 import org.sat4j.opt.MaxSatDecorator;
36 import org.sat4j.specs.ContradictionException;
37 import org.sat4j.specs.TimeoutException;
38 import org.sat4j.tools.ModelIterator;
39 import org.sat4j.tools.OptToSatAdapter;
40
41 public class BugFatih2 {
42
43 @Test
44 public void testBugReport() throws ContradictionException, TimeoutException {
45 ModelIterator solver = new ModelIterator(new OptToSatAdapter(
46 new MaxSatDecorator(SolverFactory.newDefault())));
47
48
49 System.out.println("Taille de voc : " + solver.nVars());
50 solver.newVar(13);
51 solver.setExpectedNumberOfClauses(24);
52 solver.addClause(new VecInt(new int[] { -1 }));
53 solver.addClause(new VecInt(new int[] { -2 }));
54 solver.addClause(new VecInt(new int[] { -3, 4 }));
55 solver.addClause(new VecInt(new int[] { -3, 5 }));
56 solver.addClause(new VecInt(new int[] { -3, 6 }));
57 solver.addClause(new VecInt(new int[] { -1, 7 }));
58 solver.addClause(new VecInt(new int[] { -2, 6 }));
59 solver.addClause(new VecInt(new int[] { -4, 3 }));
60 solver.addClause(new VecInt(new int[] { -5, 3 }));
61 solver.addClause(new VecInt(new int[] { -6, 3, 2 }));
62 solver.addClause(new VecInt(new int[] { -7, 1 }));
63 solver.addClause(new VecInt(new int[] { 3, -1, 8 }));
64 solver.addClause(new VecInt(new int[] { -3, 1, 8 }));
65 solver.addClause(new VecInt(new int[] { -3, -1, 9 }));
66 solver.addClause(new VecInt(new int[] { -9 }));
67 solver.addClause(new VecInt(new int[] { 1, -2, 10 }));
68 solver.addClause(new VecInt(new int[] { -1, 2, 10 }));
69 solver.addClause(new VecInt(new int[] { -1, -2, 11 }));
70 solver.addClause(new VecInt(new int[] { -10 }));
71 solver.addClause(new VecInt(new int[] { -11 }));
72 solver.addClause(new VecInt(new int[] { 3, -1, 12 }));
73 solver.addClause(new VecInt(new int[] { -3, 1, 12 }));
74 solver.addClause(new VecInt(new int[] { -3, -1, 13 }));
75 solver.addClause(new VecInt(new int[] { -13 }));
76 System.out.println("Taille de voc : " + solver.nVars());
77 if (solver.isSatisfiable()) {
78 System.out.println("Taille du modèle : " + solver.model().length);
79 for (int i = 1; i <= solver.model().length; i++) {
80 System.out.print(solver.model(i) + " ");
81 }
82 System.out.println();
83 }
84 }
85 }