3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-13 22:41:15 +00:00

More experimental FPA theory code

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
Christoph M. Wintersteiger 2014-06-02 17:57:59 +01:00
parent a8b65ebb36
commit baee61a2e4
2 changed files with 263 additions and 14 deletions

View file

@ -25,20 +25,37 @@ Revision History:
namespace smt {
class theory_fpa : public theory {
typedef trail_stack<theory_fpa> th_trail_stack;
fpa2bv_converter m_converter;
fpa2bv_rewriter m_rw;
expr_map m_trans_map;
th_trail_stack m_trail_stack;
virtual final_check_status final_check_eh() { return FC_DONE; }
virtual bool internalize_atom(app * a, bool);
virtual bool internalize_term(app * a) { return internalize_atom(a, false); }
virtual bool internalize_atom(app * atom, bool gate_ctx);
virtual bool internalize_term(app * term);
virtual void apply_sort_cnstr(enode * n, sort * s);
virtual void new_eq_eh(theory_var, theory_var);
virtual void new_diseq_eh(theory_var, theory_var);
virtual void push_scope_eh();
virtual void pop_scope_eh(unsigned num_scopes);
virtual theory* mk_fresh(context*) { return alloc(theory_fpa, get_manager()); }
virtual char const * get_name() const { return "fpa"; }
virtual char const * get_name() const { return "fpa"; }
virtual model_value_proc * mk_value(enode * n, model_generator & mg);
public:
theory_fpa(ast_manager& m);
protected:
void split_triple(expr * e, expr * & sgn, expr * & sig, expr * & exp) const {
SASSERT(is_app_of(e, get_family_id(), OP_TO_FLOAT));
SASSERT(to_app(e)->get_num_args() == 3);
sgn = to_app(e)->get_arg(0);
sig = to_app(e)->get_arg(1);
exp = to_app(e)->get_arg(2);
}
};
};