File tree Expand file tree Collapse file tree 3 files changed +15
-4
lines changed Expand file tree Collapse file tree 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
5353rm Promotion3/test.desc
5454rm Quantifiers-assertion/test.desc
5555rm Quantifiers-assignment/test.desc
56- rm Quantifiers-if/test.desc
57- rm Quantifiers-initialisation2/test.desc
5856rm Quantifiers-invalid-var-range/test.desc
59- rm Quantifiers-not/test.desc
6057rm Quantifiers-type/test.desc
6158rm Struct_Bytewise2/test.desc
6259rm 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)
41754175 // recursive call on type
41764176 find_symbols (expr.type ());
41774177
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+
41784191 // recursive call on operands
41794192 forall_operands (it, expr)
41804193 find_symbols (*it);
Original file line number Diff line number Diff line change @@ -284,10 +284,11 @@ class smt2_convt:public prop_convt
284284 // keeps track of all non-Boolean symbols and their value
285285 struct identifiert
286286 {
287+ bool is_bound;
287288 typet type;
288289 exprt value;
289290
290- identifiert ()
291+ identifiert () : is_bound( false )
291292 {
292293 type.make_nil ();
293294 value.make_nil ();
You can’t perform that action at this time.
0 commit comments