3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-14 06:45:25 +00:00

slicing equivalent vars + explain

This commit is contained in:
Jakob Rath 2023-08-18 16:21:59 +02:00
parent e09636065b
commit b4902f374b
2 changed files with 44 additions and 0 deletions

View file

@ -375,6 +375,16 @@ namespace polysat {
void collect_fixed(pvar v, justified_fixed_bits_vector& out);
void explain_fixed(enode* just, std::function<void(sat::literal)> const& on_lit, std::function<void(pvar)> const& on_var);
/**
* Collect variables that are equivalent to v (including v itself)
*
* NOTE: this might miss some variables that are equal due to equivalent base slices. With 'polysat.slicing.congruence=true' and after propagate(), it should return all equal variables.
*/
pvar_vector equivalent_vars(pvar v) const;
/** Explain why variables x and y are equivalent */
void explain_equal(pvar x, pvar y, std::function<void(sat::literal)> const& on_lit);
std::ostream& display(std::ostream& out) const;
std::ostream& display_tree(std::ostream& out) const;
};