Skip to content

Commit fe7bb38

Browse files
committed
mcsat tracing (fixes to term/kind_to_string + va_args ctx tracer)
1 parent 4f19700 commit fe7bb38

File tree

2 files changed

+116
-11
lines changed

2 files changed

+116
-11
lines changed

src/mcsat/tracing.c

Lines changed: 113 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,112 @@ void ctx_trace_value(const plugin_context_t* ctx, const mcsat_value_t* value) {
4444

4545
const char* kind_to_string(term_kind_t t) {
4646
switch (t) {
47-
case OR_TERM:
48-
return "OR_TERM";
49-
case XOR_TERM:
50-
return "XOR_TERM";
51-
case EQ_TERM:
52-
return "EQ_TERM";
53-
case ITE_TERM:
54-
return "ITE_TERM";
47+
case UNUSED_TERM:
48+
return "UNUSED_TERM";
49+
case RESERVED_TERM:
50+
return "RESERVED_TERM";
51+
case CONSTANT_TERM:
52+
return "CONSTANT_TERM";
53+
case ARITH_CONSTANT:
54+
return "ARITH_CONSTANT";
55+
case ARITH_FF_CONSTANT:
56+
return "ARITH_FF_CONSTANT";
57+
case BV64_CONSTANT:
58+
return "BV64_CONSTANT";
59+
case BV_CONSTANT:
60+
return "BV_CONSTANT";
61+
case VARIABLE:
62+
return "VARIABLE";
5563
case UNINTERPRETED_TERM:
5664
return "UNINTERPRETED_TERM";
65+
case ARITH_EQ_ATOM:
66+
return "ARITH_EQ_ATOM";
67+
case ARITH_GE_ATOM:
68+
return "ARITH_GE_ATOM";
69+
case ARITH_IS_INT_ATOM:
70+
return "ARITH_IS_INT_ATOM";
71+
case ARITH_FLOOR:
72+
return "ARITH_FLOOR";
73+
case ARITH_CEIL:
74+
return "ARITH_CEIL";
75+
case ARITH_ABS:
76+
return "ARITH_ABS";
77+
case ARITH_ROOT_ATOM:
78+
return "ARITH_ROOT_ATOM";
79+
case ARITH_FF_EQ_ATOM:
80+
return "ARITH_FF_EQ_ATOM";
81+
case ITE_TERM:
82+
return "ITE_TERM";
83+
case ITE_SPECIAL:
84+
return "ITE_SPECIAL";
85+
case APP_TERM:
86+
return "APP_TERM";
5787
case UPDATE_TERM:
5888
return "UPDATE_TERM";
89+
case TUPLE_TERM:
90+
return "TUPLE_TERM";
91+
case EQ_TERM:
92+
return "EQ_TERM";
93+
case DISTINCT_TERM:
94+
return "DISTINCT_TERM";
95+
case FORALL_TERM:
96+
return "FORALL_TERM";
97+
case LAMBDA_TERM:
98+
return "LAMBDA_TERM";
99+
case OR_TERM:
100+
return "OR_TERM";
101+
case XOR_TERM:
102+
return "XOR_TERM";
103+
case ARITH_BINEQ_ATOM:
104+
return "ARITH_BINEQ_ATOM";
59105
case ARITH_RDIV:
60106
return "ARITH_RDIV";
61107
case ARITH_IDIV:
62108
return "ARITH_IDIV";
63109
case ARITH_MOD:
64110
return "ARITH_MOD";
65-
default:
66-
assert(false);
67-
return "UNKNOWN_TERM";
111+
case ARITH_DIVIDES_ATOM:
112+
return "ARITH_DIVIDES_ATOM";
113+
case ARITH_FF_BINEQ_ATOM:
114+
return "ARITH_FF_BINEQ_ATOM";
115+
case BV_ARRAY:
116+
return "BV_ARRAY";
117+
case BV_DIV:
118+
return "BV_DIV";
119+
case BV_REM:
120+
return "BV_REM";
121+
case BV_SDIV:
122+
return "BV_SDIV";
123+
case BV_SREM:
124+
return "BV_SREM";
125+
case BV_SMOD:
126+
return "BV_SMOD";
127+
case BV_SHL:
128+
return "BV_SHL";
129+
case BV_LSHR:
130+
return "BV_LSHR";
131+
case BV_ASHR:
132+
return "BV_ASHR";
133+
case BV_EQ_ATOM:
134+
return "BV_EQ_ATOM";
135+
case BV_GE_ATOM:
136+
return "BV_GE_ATOM";
137+
case BV_SGE_ATOM:
138+
return "BV_SGE_ATOM";
139+
case SELECT_TERM:
140+
return "SELECT_TERM";
141+
case BIT_TERM:
142+
return "BIT_TERM";
143+
case POWER_PRODUCT:
144+
return "POWER_PRODUCT";
145+
case ARITH_POLY:
146+
return "ARITH_POLY";
147+
case ARITH_FF_POLY:
148+
return "ARITH_FF_POLY";
149+
case BV64_POLY:
150+
return "BV64_POLY";
151+
case BV_POLY:
152+
return "BV_POLY";
68153
}
69154
}
70155

@@ -78,6 +163,8 @@ const char* type_to_string(type_kind_t kind) {
78163
return "INT_TYPE";
79164
case REAL_TYPE:
80165
return "REAL_TYPE";
166+
case FF_TYPE:
167+
return "FF_TYPE";
81168
case BITVECTOR_TYPE:
82169
return "BITVECTOR_TYPE";
83170
case SCALAR_TYPE:
@@ -133,3 +220,18 @@ void ctx_trace_printf(const plugin_context_t* ctx, const char* format, ...) {
133220
va_end(p);
134221
}
135222
}
223+
224+
void ctx_trace_vprintf(const plugin_context_t* ctx, const char* format, va_list p) {
225+
int code;
226+
227+
if (ctx->tracer != NULL && !ctx->tracer->print_failed) {
228+
code = vfprintf(ctx->tracer->file, format, p);
229+
if (code >= 0) {
230+
code = fflush(ctx->tracer->file);
231+
}
232+
if (code < 0) {
233+
ctx->tracer->print_failed = true;
234+
ctx->tracer->err_code = errno;
235+
}
236+
}
237+
}

src/mcsat/tracing.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ void mcsat_trace_printf(tracer_t* tracer, const char* format, ...) __attribute__
8080
/** Print to the trace */
8181
void ctx_trace_printf(const plugin_context_t* ctx, const char* format, ...) __attribute__ ((format (printf, 2, 3)));
8282

83+
/** Print to the trace (with explicit va_list vs. variadic) */
84+
void ctx_trace_vprintf(const plugin_context_t* ctx, const char* format, va_list p);
85+
8386
/** String representation of the kind */
8487
const char* kind_to_string(term_kind_t kind);
8588

0 commit comments

Comments
 (0)