@@ -31,7 +31,7 @@ class constant_exprt;
31
31
class index_exprt ;
32
32
class member_exprt ;
33
33
34
- class smt2_convt : public prop_convt
34
+ class smt2_convt : public stack_decision_proceduret
35
35
{
36
36
public:
37
37
enum class solvert
@@ -52,77 +52,20 @@ class smt2_convt:public prop_convt
52
52
const std::string &_notes,
53
53
const std::string &_logic,
54
54
solvert _solver,
55
- std::ostream &_out)
56
- : use_FPA_theory(false ),
57
- use_datatypes (false ),
58
- use_array_of_bool(false ),
59
- emit_set_logic(true ),
60
- ns(_ns),
61
- out(_out),
62
- benchmark(_benchmark),
63
- notes(_notes),
64
- logic(_logic),
65
- solver(_solver),
66
- boolbv_width(_ns),
67
- pointer_logic(_ns),
68
- no_boolean_variables(0 )
69
- {
70
- // We set some defaults differently
71
- // for some solvers.
72
-
73
- switch (solver)
74
- {
75
- case solvert::GENERIC:
76
- break ;
77
-
78
- case solvert::BOOLECTOR:
79
- break ;
80
-
81
- case solvert::CPROVER_SMT2:
82
- use_array_of_bool = true ;
83
- emit_set_logic = false ;
84
- break ;
85
-
86
- case solvert::CVC3:
87
- break ;
88
-
89
- case solvert::CVC4:
90
- break ;
91
-
92
- case solvert::MATHSAT:
93
- break ;
94
-
95
- case solvert::YICES:
96
- break ;
97
-
98
- case solvert::Z3:
99
- use_array_of_bool=true ;
100
- emit_set_logic=false ;
101
- use_datatypes=true ;
102
- break ;
103
- }
104
-
105
- write_header ();
106
- }
55
+ std::ostream &_out);
107
56
108
57
~smt2_convt () override = default ;
109
- resultt dec_solve () override ;
110
58
111
59
bool use_FPA_theory;
112
60
bool use_datatypes;
113
61
bool use_array_of_bool;
114
62
bool emit_set_logic;
115
63
116
64
exprt handle (const exprt &expr) override ;
117
- literalt convert (const exprt &expr) override ;
118
65
void set_to (const exprt &expr, bool value) override ;
119
66
exprt get (const exprt &expr) const override ;
120
- std::string decision_procedure_text () const override
121
- {
122
- return " SMT2" ;
123
- }
67
+ std::string decision_procedure_text () const override ;
124
68
void print_assignment (std::ostream &out) const override ;
125
- tvt l_get (literalt l) const override ;
126
69
127
70
// / Unimplemented
128
71
void push () override ;
@@ -133,10 +76,6 @@ class smt2_convt:public prop_convt
133
76
// / Currently, only implements a single stack element (no nested contexts)
134
77
void pop () override ;
135
78
136
- void convert_expr (const exprt &);
137
- void convert_type (const typet &);
138
- void convert_literal (const literalt);
139
-
140
79
std::size_t get_number_of_solver_calls () const override ;
141
80
142
81
protected:
@@ -150,6 +89,8 @@ class smt2_convt:public prop_convt
150
89
151
90
std::size_t number_of_solver_calls = 0 ;
152
91
92
+ resultt dec_solve () override ;
93
+
153
94
void write_header ();
154
95
void write_footer (std::ostream &);
155
96
@@ -183,6 +124,13 @@ class smt2_convt:public prop_convt
183
124
184
125
std::string convert_identifier (const irep_idt &identifier);
185
126
127
+ void convert_expr (const exprt &);
128
+ void convert_type (const typet &);
129
+ void convert_literal (const literalt);
130
+
131
+ literalt convert (const exprt &expr);
132
+ tvt l_get (literalt l) const ;
133
+
186
134
// auxiliary methods
187
135
exprt prepare_for_convert_expr (const exprt &expr);
188
136
exprt lower_byte_operators (const exprt &expr);
0 commit comments