3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-20 21:03:39 +00:00

update documentation according to #1058

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-07-07 07:44:55 -07:00
parent 465ed7d068
commit 49cf3f8008
2 changed files with 8 additions and 4 deletions

View file

@ -5376,7 +5376,10 @@ extern "C" {
/** /**
\brief Add a new formula \c a to the given goal. \brief Add a new formula \c a to the given goal.
The formula is split according to the following procedure that is applied
until a fixed-point:
Conjunctions are split into separate formulas. Conjunctions are split into separate formulas.
Negations are distributed over disjunctions, resulting in separate formulas.
If the goal is \c false, adding new formulas is a no-op. If the goal is \c false, adding new formulas is a no-op.
If the formula \c a is \c true, then nothing is added. If the formula \c a is \c true, then nothing is added.
If the formula \c a is \c false, then the entire goal is replaced by the formula \c false. If the formula \c a is \c false, then the entire goal is replaced by the formula \c false.

View file

@ -137,7 +137,8 @@ void goal::push_back(expr * f, proof * pr, expr_dependency * d) {
} }
void goal::quick_process(bool save_first, expr_ref& f, expr_dependency * d) { void goal::quick_process(bool save_first, expr_ref& f, expr_dependency * d) {
if (!m().is_and(f) && !(m().is_not(f) && m().is_or(to_app(f)->get_arg(0)))) { expr* g = 0;
if (!m().is_and(f) && !(m().is_not(f, g) && m().is_or(g))) {
if (!save_first) { if (!save_first) {
push_back(f, 0, d); push_back(f, 0, d);
} }
@ -170,8 +171,8 @@ void goal::quick_process(bool save_first, expr_ref& f, expr_dependency * d) {
todo.push_back(expr_pol(t->get_arg(i), false)); todo.push_back(expr_pol(t->get_arg(i), false));
} }
} }
else if (m().is_not(curr)) { else if (m().is_not(curr, g)) {
todo.push_back(expr_pol(to_app(curr)->get_arg(0), !pol)); todo.push_back(expr_pol(g, !pol));
} }
else { else {
if (!pol) { if (!pol) {