mirror of
https://github.com/Z3Prover/z3
synced 2025-08-14 06:45:25 +00:00
add bit-matrix, avoid flattening and/or after bit-blasting, split pdd_grobner into solver/simplifier, add xlin, add smtfd option for incremental mode logic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
09dbacdf50
commit
1d0572354b
17 changed files with 991 additions and 386 deletions
55
src/math/grobner/pdd_simplifier.h
Normal file
55
src/math/grobner/pdd_simplifier.h
Normal file
|
@ -0,0 +1,55 @@
|
|||
/*++
|
||||
Copyright (c) 2017 Microsoft Corporation
|
||||
|
||||
|
||||
Abstract:
|
||||
|
||||
simplification routines for pdd polys
|
||||
|
||||
Author:
|
||||
Nikolaj Bjorner (nbjorner)
|
||||
Lev Nachmanson (levnach)
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
||||
#include "math/grobner/pdd_solver.h"
|
||||
|
||||
namespace dd {
|
||||
|
||||
class simplifier {
|
||||
|
||||
typedef solver::equation equation;
|
||||
typedef ptr_vector<equation> equation_vector;
|
||||
|
||||
solver& s;
|
||||
public:
|
||||
|
||||
simplifier(solver& s): s(s) {}
|
||||
~simplifier() {}
|
||||
|
||||
void operator()();
|
||||
|
||||
private:
|
||||
|
||||
struct compare_top_var;
|
||||
bool simplify_linear_step(bool binary);
|
||||
bool simplify_linear_step(equation_vector& linear);
|
||||
typedef vector<equation_vector> use_list_t;
|
||||
use_list_t get_use_list();
|
||||
void add_to_use(equation* e, use_list_t& use_list);
|
||||
void remove_from_use(equation* e, use_list_t& use_list);
|
||||
void remove_from_use(equation* e, use_list_t& use_list, unsigned except_v);
|
||||
|
||||
bool simplify_cc_step();
|
||||
bool simplify_elim_pure_step();
|
||||
bool simplify_elim_dual_step();
|
||||
bool simplify_leaf_step();
|
||||
bool simplify_exlin();
|
||||
void exlin_augment(vector<pdd>& eqs);
|
||||
void simplify_exlin(vector<pdd> const& eqs, vector<pdd>& simp_eqs);
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue