/* * Print all lemmas */ void print_lemmas(FILE *f, smt_core_t *core) { lemma_block_t *tmp; literal_t *lemma; uint32_t i, j, n; for (i=0; i<core->lemmas.free_block; i++) { tmp = core->lemmas.block[i]; lemma = tmp->data; j = 0; while (j < tmp->ptr) { n = lemma_length(lemma); print_litarray(f, n, lemma); fputc('\n', f); n ++; j += n; lemma += n; } } }
/* * Print the definition of x in vtbl */ static void print_bv_vardef(FILE *f, bv_vartable_t *vtbl, thvar_t x) { uint32_t nbits; assert(valid_bvvar(vtbl, x)); nbits = bvvar_bitsize(vtbl, x); print_bvvar(f, x); fprintf(f, ":bv[%"PRIu32"] = ", nbits); switch (bvvar_tag(vtbl, x)) { case BVTAG_VAR: fputs("var", f); break; case BVTAG_CONST64: bvconst64_print(f, bvvar_val64(vtbl, x), nbits); break; case BVTAG_CONST: bvconst_print(f, bvvar_val(vtbl, x), nbits); break; case BVTAG_POLY64: print_bv_poly64(f, bvvar_poly64_def(vtbl, x)); break; case BVTAG_POLY: print_bv_poly(f, bvvar_poly_def(vtbl, x)); break; case BVTAG_PPROD: print_bv_product(f, bvvar_pprod_def(vtbl, x)); break; case BVTAG_BIT_ARRAY: print_litarray(f, nbits, bvvar_bvarray_def(vtbl, x)); break; case BVTAG_ITE: print_bv_ite(f, bvvar_ite_def(vtbl, x)); break; case BVTAG_UDIV: print_bv_binop(f, "div", bvvar_binop(vtbl, x)); break; case BVTAG_UREM: print_bv_binop(f, "rem", bvvar_binop(vtbl, x)); break; case BVTAG_SDIV: print_bv_binop(f, "sdiv", bvvar_binop(vtbl, x)); break; case BVTAG_SREM: print_bv_binop(f, "srem", bvvar_binop(vtbl, x)); break; case BVTAG_SMOD: print_bv_binop(f, "smod", bvvar_binop(vtbl, x)); break; case BVTAG_SHL: print_bv_binop(f, "shl", bvvar_binop(vtbl, x)); break; case BVTAG_LSHR: print_bv_binop(f, "lshr", bvvar_binop(vtbl, x)); break; case BVTAG_ASHR: print_bv_binop(f, "ashr", bvvar_binop(vtbl, x)); break; case BVTAG_ADD: print_bv_binop(f, "add", bvvar_binop(vtbl, x)); break; case BVTAG_SUB: print_bv_binop(f, "sub", bvvar_binop(vtbl, x)); break; case BVTAG_MUL: print_bv_binop(f, "mul", bvvar_binop(vtbl, x)); break; case BVTAG_NEG: print_bvneg(f, bvvar_binop(vtbl, x)); break; } }