File tree 3 files changed +15
-4
lines changed
3 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -53,10 +53,7 @@ rm Pointer_byte_extract9/test.desc
53
53
rm Promotion3/test.desc
54
54
rm Quantifiers-assertion/test.desc
55
55
rm Quantifiers-assignment/test.desc
56
- rm Quantifiers-if/test.desc
57
- rm Quantifiers-initialisation2/test.desc
58
56
rm Quantifiers-invalid-var-range/test.desc
59
- rm Quantifiers-not/test.desc
60
57
rm Quantifiers-type/test.desc
61
58
rm Struct_Bytewise2/test.desc
62
59
rm Union_Initialization1/test.desc
Original file line number Diff line number Diff line change @@ -4175,6 +4175,19 @@ void smt2_convt::find_symbols(const exprt &expr)
4175
4175
// recursive call on type
4176
4176
find_symbols (expr.type ());
4177
4177
4178
+ if (expr.id () == ID_exists || expr.id () == ID_forall)
4179
+ {
4180
+ // do not declare the quantified symbol, but record
4181
+ // as 'bound symbol'
4182
+ const auto &q_expr = to_quantifier_expr (expr);
4183
+ const auto identifier = q_expr.symbol ().get_identifier ();
4184
+ identifiert &id = identifier_map[identifier];
4185
+ id.type = q_expr.symbol ().type ();
4186
+ id.is_bound = true ;
4187
+ find_symbols (q_expr.where ());
4188
+ return ;
4189
+ }
4190
+
4178
4191
// recursive call on operands
4179
4192
forall_operands (it, expr)
4180
4193
find_symbols (*it);
Original file line number Diff line number Diff line change @@ -284,10 +284,11 @@ class smt2_convt:public prop_convt
284
284
// keeps track of all non-Boolean symbols and their value
285
285
struct identifiert
286
286
{
287
+ bool is_bound;
287
288
typet type;
288
289
exprt value;
289
290
290
- identifiert ()
291
+ identifiert () : is_bound( false )
291
292
{
292
293
type.make_nil ();
293
294
value.make_nil ();
You can’t perform that action at this time.
0 commit comments