mirror of
https://github.com/Z3Prover/z3
synced 2025-08-22 19:17:53 +00:00
Add EUF (congruence closure) proof hints and checker to the new core
EUF proofs are checked modulo union-find. Equalities are added to to union-find if they are assumptions or if they can be derived using congruence closure. The congruence closure assumptions are added as proof-hints. Note that this proof format does not track equality inferences, symmetry and transitivity. Instead they are handled by assuming a union-find based checker.
This commit is contained in:
parent
6f2fde87d1
commit
9be8fc7857
11 changed files with 315 additions and 57 deletions
|
@ -313,7 +313,7 @@ namespace bv {
|
|||
case bv_justification::kind_t::eq2bit:
|
||||
SASSERT(s().value(c.m_antecedent) == l_true);
|
||||
r.push_back(c.m_antecedent);
|
||||
ctx.add_antecedent(var2enode(c.m_v1), var2enode(c.m_v2));
|
||||
ctx.add_antecedent(probing, var2enode(c.m_v1), var2enode(c.m_v2));
|
||||
break;
|
||||
case bv_justification::kind_t::ne2bit: {
|
||||
r.push_back(c.m_antecedent);
|
||||
|
@ -381,8 +381,8 @@ namespace bv {
|
|||
break;
|
||||
}
|
||||
case bv_justification::kind_t::bv2int: {
|
||||
ctx.add_antecedent(c.a, c.b);
|
||||
ctx.add_antecedent(c.a, c.c);
|
||||
ctx.add_antecedent(probing, c.a, c.b);
|
||||
ctx.add_antecedent(probing, c.a, c.c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue