|
41 | 41 | #include <goto-checker/multi_path_symex_checker.h>
|
42 | 42 | #include <goto-checker/multi_path_symex_only_checker.h>
|
43 | 43 | #include <goto-checker/properties.h>
|
| 44 | +#include <goto-checker/single_loop_incremental_symex_checker.h> |
44 | 45 | #include <goto-checker/single_path_symex_checker.h>
|
45 | 46 | #include <goto-checker/single_path_symex_only_checker.h>
|
46 | 47 | #include <goto-checker/stop_on_fail_verifier.h>
|
@@ -335,6 +336,29 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options)
|
335 | 336 | "max-node-refinement",
|
336 | 337 | cmdline.get_value("max-node-refinement"));
|
337 | 338 |
|
| 339 | + if(cmdline.isset("incremental-loop")) |
| 340 | + { |
| 341 | + options.set_option( |
| 342 | + "incremental-loop", cmdline.get_value("incremental-loop")); |
| 343 | + options.set_option("refine", true); |
| 344 | + options.set_option("refine-arrays", true); |
| 345 | + |
| 346 | + if(cmdline.isset("unwind-min")) |
| 347 | + options.set_option("unwind-min", cmdline.get_value("unwind-min")); |
| 348 | + |
| 349 | + if(cmdline.isset("unwind-max")) |
| 350 | + options.set_option("unwind-max", cmdline.get_value("unwind-max")); |
| 351 | + |
| 352 | + if(cmdline.isset("ignore-properties-before-unwind-min")) |
| 353 | + options.set_option("ignore-properties-before-unwind-min", true); |
| 354 | + |
| 355 | + if(cmdline.isset("paths")) |
| 356 | + { |
| 357 | + error() << "--paths not supported with --incremental-loop" << eom; |
| 358 | + exit(CPROVER_EXIT_USAGE_ERROR); |
| 359 | + } |
| 360 | + } |
| 361 | + |
338 | 362 | // SMT Options
|
339 | 363 |
|
340 | 364 | if(cmdline.isset("smt1"))
|
@@ -613,7 +637,22 @@ int cbmc_parse_optionst::doit()
|
613 | 637 |
|
614 | 638 | std::unique_ptr<goto_verifiert> verifier = nullptr;
|
615 | 639 |
|
616 |
| - if( |
| 640 | + if(options.is_set("incremental-loop")) |
| 641 | + { |
| 642 | + if(options.get_bool_option("stop-on-fail")) |
| 643 | + { |
| 644 | + verifier = util_make_unique< |
| 645 | + stop_on_fail_verifiert<single_loop_incremental_symex_checkert>>( |
| 646 | + options, ui_message_handler, goto_model); |
| 647 | + } |
| 648 | + else |
| 649 | + { |
| 650 | + verifier = util_make_unique<all_properties_verifier_with_trace_storaget< |
| 651 | + single_loop_incremental_symex_checkert>>( |
| 652 | + options, ui_message_handler, goto_model); |
| 653 | + } |
| 654 | + } |
| 655 | + else if( |
617 | 656 | options.get_bool_option("stop-on-fail") && options.get_bool_option("paths"))
|
618 | 657 | {
|
619 | 658 | verifier =
|
|
0 commit comments