File tree Expand file tree Collapse file tree 3 files changed +41
-0
lines changed
regression/ebmc/engine-heuristic Expand file tree Collapse file tree 3 files changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ CORE
2
+ unsupported1.smv
3
+
4
+ ^\[.*\] EX TRUE: UNKNOWN$
5
+ ^EXIT=10$
6
+ ^SIGNAL=0$
7
+ --
8
+ ^warning: ignoring
9
+ ^Generating Decision Problem
10
+ --
Original file line number Diff line number Diff line change
1
+ MODULE main
2
+
3
+ -- not supported by k-induction or BMC
4
+ CTLSPEC EX 1
Original file line number Diff line number Diff line change @@ -191,6 +191,25 @@ void bmc_with_iterative_constraint_strengthening(
191
191
}
192
192
}
193
193
194
+ static bool have_supported_property (ebmc_propertiest &properties)
195
+ {
196
+ bool have_supported = false ;
197
+
198
+ for (auto &property : properties.properties )
199
+ {
200
+ if (property.is_disabled () || property.is_failure ())
201
+ continue ;
202
+
203
+ // Is it supported by the BMC engine?
204
+ if (bmc_supports_property (property.normalized_expr ))
205
+ have_supported = true ;
206
+ else
207
+ property.failure (" property not supported by BMC engine" );
208
+ }
209
+
210
+ return have_supported;
211
+ }
212
+
194
213
property_checker_resultt bmc (
195
214
std::size_t bound,
196
215
bool convert_only,
@@ -204,6 +223,14 @@ property_checker_resultt bmc(
204
223
ebmc_propertiest properties = properties_in;
205
224
206
225
messaget message (message_handler);
226
+
227
+ // exit early if there is no supported property
228
+ if (!have_supported_property (properties))
229
+ {
230
+ message.status () << " No supported property" << messaget::eom;
231
+ return property_checker_resultt{std::move (properties)};
232
+ }
233
+
207
234
message.status () << " Generating Decision Problem" << messaget::eom;
208
235
209
236
// convert the transition system
You can’t perform that action at this time.
0 commit comments