3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-01-18 16:28:56 +00:00

coerce bool

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2026-01-13 11:45:57 -08:00
parent c78d5405d1
commit 8b188621a5
2 changed files with 7 additions and 9 deletions

View file

@ -399,7 +399,7 @@ namespace Microsoft.Z3
/// <returns>String representation</returns>
public string ToString(bool compact)
{
return Native.Z3_rcf_num_to_string(Context.nCtx, NativeObject, compact, false);
return Native.Z3_rcf_num_to_string(Context.nCtx, NativeObject, compact ? 1 : 0, false);
}
/// <summary>

View file

@ -562,8 +562,8 @@ namespace smt {
if (sub_decl) {
TRACE(datatype, tout << "adding recursive case: " << mk_pp(arg1->get_expr(), m) << ""
<< mk_pp(s->get_expr(), m) << "\n";);
auto tmp = m.mk_not( m.mk_app(sub_decl, arg1->get_expr(), s->get_expr()));
lits.push_back(mk_literal(app_ref(tmp, m)));
auto tmp = m.mk_not(m.mk_app(sub_decl, arg1->get_expr(), s->get_expr()));
lits.push_back(mk_literal(tmp));
found_possible = true;
}
}
@ -630,9 +630,8 @@ namespace smt {
if (sub_decl) {
TRACE(datatype, tout << "asserting NOT " << mk_pp(arg1->get_expr(), m) << " subterm "
<< mk_pp(s->get_expr(), m) << "\n";);
app_ref sub_app(m.mk_app(sub_decl, arg1->get_expr(), s->get_expr()), m);
ctx.internalize(sub_app, false);
literal sub_lit = literal(ctx.get_bool_var(sub_app));
auto sub_app = m.mk_app(sub_decl, arg1->get_expr(), s->get_expr());
literal sub_lit = mk_literal(sub_app);
literal lits[2] = {antecedent, ~sub_lit};
ctx.mk_th_axiom(get_id(), 2, lits);
}
@ -1277,9 +1276,8 @@ namespace smt {
if (!r) {
ptr_vector<func_decl> const & constructors = *m_util.get_datatype_constructors(dt);
func_decl * rec = m_util.get_constructor_is(constructors[unassigned_idx]);
app_ref rec_app(m.mk_app(rec, n->get_expr()), m);
ctx.internalize(rec_app, false);
consequent = literal(ctx.get_bool_var(rec_app));
auto rec_app = m.mk_app(rec, n->get_expr());
consequent = mk_literal(rec_app);
}
else {
consequent = literal(ctx.enode2bool_var(r));