3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00

add debugging to theory_str::get_len_value in preparation for fixes

This commit is contained in:
Murphy Berzish 2016-08-02 14:52:44 -04:00
parent a51ad07e3f
commit 45c4954959

View file

@ -33,7 +33,7 @@ theory_str::theory_str(ast_manager & m):
opt_EagerStringConstantLengthAssertions(true),
opt_VerifyFinalCheckProgress(true),
opt_LCMUnrollStep(2),
opt_NoQuickReturn_IntegerTheory(true),
opt_NoQuickReturn_IntegerTheory(false),
opt_DisableIntegerTheoryIntegration(false),
/* Internal setup */
search_started(false),
@ -3882,6 +3882,7 @@ bool theory_str::get_len_value(expr* e, rational& val) {
context& ctx = get_context();
ast_manager & m = get_manager();
theory* th = ctx.get_theory(m_autil.get_family_id());
if (!th) {
TRACE("t_str_int", tout << "oops, can't get m_autil's theory" << std::endl;);
@ -3926,6 +3927,18 @@ bool theory_str::get_len_value(expr* e, rational& val) {
if (ctx.e_internalized(len)) {
enode * e_len = ctx.get_enode(len);
tout << "has " << e_len->get_num_th_vars() << " theory vars" << std::endl;
// eqc debugging
{
tout << "dump equivalence class of " << mk_pp(len, get_manager()) << std::endl;
enode * nNode = ctx.get_enode(len);
enode * eqcNode = nNode;
do {
app * ast = eqcNode->get_owner();
tout << mk_pp(ast, get_manager()) << std::endl;
eqcNode = eqcNode->get_next();
} while (eqcNode != nNode);
}
}
});
@ -3939,6 +3952,7 @@ bool theory_str::get_len_value(expr* e, rational& val) {
}
}
}
TRACE("t_str_int", tout << "length of " << mk_ismt2_pp(e, m) << " is " << val << std::endl;);
return val.is_int();
}