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 public void delete(int[] clause) {
102
103 }
104
105
106
107
108 public void conflictFound(IConstr confl, int dlevel, int trailLevel) {
109 System.out.println("conflict ");
110 }
111
112
113
114
115 public void conflictFound(int p) {
116 System.out.println("conflict during propagation");
117 }
118
119 public void solutionFound(int[] model, RandomAccessModel lazyModel) {
120 System.out.println("solution found ");
121 }
122
123 public void beginLoop() {
124 }
125
126 public void start() {
127 }
128
129
130
131
132 public void end(Lbool result) {
133 }
134
135
136
137
138 public void restarting() {
139 System.out.println("restarting ");
140 }
141
142 public void backjump(int backjumpLevel) {
143 System.out.println("backjumping to decision level " + backjumpLevel);
144 }
145
146
147
148
149 public void init(ISolverService solverService) {
150 }
151
152
153
154
155 public void cleaning() {
156 System.out.println("cleaning");
157 }
158
159 }