3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-04-02 09:58:59 +00:00

Missing internalization

This commit is contained in:
CEisenhofer 2026-03-25 19:52:27 +01:00
parent 495921ca17
commit 910c68cd42
2 changed files with 9 additions and 2 deletions

View file

@ -95,7 +95,7 @@ namespace smt {
// -----------------------------------------------------------------------
bool theory_nseq::internalize_atom(app* atom, bool /*gate_ctx*/) {
// std::cout << "internalize_atom: " << mk_pp(atom, m) << std::endl;
std::cout << "internalize_atom: " << mk_pp(atom, m) << std::endl;
// str.in_re atoms are boolean predicates: register as bool_var
// so that assign_eh fires when the SAT solver assigns them.
// Following theory_seq: create a bool_var directly without an enode
@ -127,7 +127,7 @@ namespace smt {
}
bool theory_nseq::internalize_term(app* term) {
// std::cout << "internalize_term: " << mk_pp(term, m) << std::endl;
std::cout << "internalize_term: " << mk_pp(term, m) << std::endl;
// ensure ALL children are internalized (following theory_seq pattern)
for (auto arg : *term) {
mk_var(ensure_enode(arg));

View file

@ -47,6 +47,13 @@ namespace smt {
mk_var(ctx.get_enode(s));
return true;
}
if (m_util.is_skolem(atom)) {
// char2bit
bool_var bv = ctx.mk_bool_var(atom);
ctx.set_var_theory(bv, get_id());
ctx.mark_as_relevant(bv);
return true;
}
return internalize_term(atom);
}