mirror of
https://github.com/Z3Prover/z3
synced 2026-01-20 01:03:20 +00:00
passing with open ai codex on some non-deterministic param eval
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
2b99949ac4
commit
ba83ec929a
29 changed files with 665 additions and 371 deletions
|
|
@ -656,18 +656,22 @@ namespace qe {
|
|||
expr_ref den_is0(m.mk_eq(divs[i].den, arith.mk_real(0)), m);
|
||||
paxioms.push_back(m.mk_or(den_is0, m.mk_eq(divs[i].num, arith.mk_mul(divs[i].den, divs[i].name))));
|
||||
for (unsigned j = i + 1; j < divs.size(); ++j) {
|
||||
// TODO: non-deterministic parameter evaluation
|
||||
paxioms.push_back(m.mk_or(m.mk_not(m.mk_eq(divs[i].den, divs[j].den)),
|
||||
m.mk_not(m.mk_eq(divs[i].num, divs[j].num)),
|
||||
m.mk_eq(divs[i].name, divs[j].name)));
|
||||
expr* eq_den = m.mk_eq(divs[i].den, divs[j].den);
|
||||
expr* eq_num = m.mk_eq(divs[i].num, divs[j].num);
|
||||
expr* eq_name = m.mk_eq(divs[i].name, divs[j].name);
|
||||
expr* not_eq_den = m.mk_not(eq_den);
|
||||
expr* not_eq_num = m.mk_not(eq_num);
|
||||
paxioms.push_back(m.mk_or(not_eq_den, not_eq_num, eq_name));
|
||||
}
|
||||
}
|
||||
expr_ref body(arith.mk_real(0), m);
|
||||
expr_ref v0(m.mk_var(0, arith.mk_real()), m);
|
||||
expr_ref v1(m.mk_var(1, arith.mk_real()), m);
|
||||
for (auto const& p : divs) {
|
||||
// TODO: non-deterministic parameter evaluation
|
||||
body = m.mk_ite(m.mk_and(m.mk_eq(v0, p.num), m.mk_eq(v1, p.den)), p.name, body);
|
||||
expr* eq_v0_num = m.mk_eq(v0, p.num);
|
||||
expr* eq_v1_den = m.mk_eq(v1, p.den);
|
||||
expr* guard = m.mk_and(eq_v0_num, eq_v1_den);
|
||||
body = m.mk_ite(guard, p.name, body);
|
||||
}
|
||||
m_div_mc->add(arith.mk_div0(), body);
|
||||
}
|
||||
|
|
@ -969,4 +973,3 @@ tactic * mk_nlqe_tactic(ast_manager & m, params_ref const& p) {
|
|||
return alloc(qe::nlqsat, m, qe::elim_t, p);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue