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.tools;
31
32 import java.util.Map;
33
34 import org.sat4j.specs.IConstr;
35 import org.sat4j.specs.ISolverService;
36 import org.sat4j.specs.Lbool;
37 import org.sat4j.specs.RandomAccessModel;
38 import org.sat4j.specs.SearchListener;
39
40
41
42
43
44
45
46 public class TextOutputTracing<T> implements SearchListener<ISolverService> {
47
48 private static final long serialVersionUID = 1L;
49
50 private final Map<Integer, T> mapping;
51
52
53
54
55 public TextOutputTracing(Map<Integer, T> mapping) {
56 this.mapping = mapping;
57 }
58
59 private String node(int dimacs) {
60
61 if (this.mapping != null) {
62 int var = Math.abs(dimacs);
63 T t = this.mapping.get(var);
64 if (t != null) {
65 if (dimacs > 0) {
66 return t.toString();
67 }
68 return "-" + t.toString();
69 }
70 }
71 return Integer.toString(dimacs);
72 }
73
74 public void assuming(int p) {
75 System.out.println("assuming " + node(p));
76 }
77
78
79
80
81 public void propagating(int p, IConstr reason) {
82 System.out.println("propagating " + node(p));
83 }
84
85 public void backtracking(int p) {
86 System.out.println("backtracking " + node(p));
87 }
88
89 public void adding(int p) {
90 System.out.println("adding " + node(p));
91 }
92
93
94
95
96 public void learn(IConstr clause) {
97 System.out.println("learning " + clause);
98
99 }
100
101
102
103
104 public void learnUnit(int p) {
105 System.out.println("learning unit " + p);
106
107 }
108
109 public void delete(int[] clause) {
110
111 }
112
113
114
115
116 public void conflictFound(IConstr confl, int dlevel, int trailLevel) {
117 System.out.println("conflict ");
118 }
119
120
121
122
123 public void conflictFound(int p) {
124 System.out.println("conflict during propagation");
125 }
126
127 public void solutionFound(int[] model, RandomAccessModel lazyModel) {
128 System.out.println("solution found ");
129 }
130
131 public void beginLoop() {
132 }
133
134 public void start() {
135 }
136
137
138
139
140 public void end(Lbool result) {
141 }
142
143
144
145
146 public void restarting() {
147 System.out.println("restarting ");
148 }
149
150 public void backjump(int backjumpLevel) {
151 System.out.println("backjumping to decision level " + backjumpLevel);
152 }
153
154
155
156
157 public void init(ISolverService solverService) {
158 }
159
160
161
162
163 public void cleaning() {
164 System.out.println("cleaning");
165 }
166
167 }