3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 20:05:51 +00:00

working on sub/super slices

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-12-22 17:45:23 -08:00
parent 9a7e50c1e8
commit 5bbec43235
4 changed files with 134 additions and 24 deletions

View file

@ -34,7 +34,7 @@ namespace polysat {
typedef sat::literal literal;
typedef sat::bool_var bool_var;
typedef sat::literal_vector literal_vector;
using subslice_infos = vector<std::tuple<euf::enode*, unsigned, eq_justification>>;
using slice_infos = vector<std::tuple<euf::enode*, unsigned, eq_justification>>;
using pdd = dd::pdd;
struct stats {
@ -75,7 +75,8 @@ namespace polysat {
sat::check_result intblast();
void get_subslices(pvar v, subslice_infos& slices);
void get_sub_slices(pvar v, slice_infos& slices);
void get_super_slices(pvar v, slice_infos& slices);
// internalize
bool visit(expr* e) override;
@ -169,6 +170,8 @@ namespace polysat {
void propagate(dependency const& d, bool sign, constraint_id_vector const& deps) override;
trail_stack& trail() override;
bool inconsistent() const override;
void get_bitvector_sub_slices(pvar v, justified_slices& out) override;
void get_bitvector_super_slices(pvar v, justified_slices& out) override;
void get_bitvector_suffixes(pvar v, justified_slices& out) override;
void get_fixed_bits(pvar v, justified_fixed_bits& fixed_bits) override;