31 resultt result(resultt::progresst::DONE);
39 if(result.
progress == resultt::progresst::FOUND_FAIL)
68 const auto solver_runtime =
74 if(result.
progress == resultt::progresst::FOUND_FAIL)
101 std::chrono::duration<double>
110 return solver_runtime;
117 std::chrono::duration<double> solver_runtime)
ssa_step_predicatet ssa_step_matches_failing_property(const irep_idt &property_id)
Returns a function that checks whether an SSA step is an assertion with property_id.
void output_graphml(const goto_tracet &goto_trace, const namespacet &ns, const optionst &options)
outputs an error witness in graphml format
Bounded Model Checking Utilities.
void build_goto_trace(const symex_target_equationt &target, ssa_step_predicatet is_last_step_to_keep, const decision_proceduret &decision_procedure, const namespacet &ns, goto_tracet &goto_trace)
Build a trace by going through the steps of target and stopping after the step matching a given condi...
Abstract interface to eager or lazy GOTO models.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Provides management of goal variables that encode properties.
unsigned get_remaining_vccs() const
ui_message_handlert & ui_message_handler
mstreamt & statistics() const
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
bool get_bool_option(const std::string &option) const
goto_tracet build_trace(const irep_idt &) const override
Builds and returns the trace for the FAILed property with the given property_id.
void output_proof() override
single_path_symex_checkert(const optionst &options, ui_message_handlert &ui_message_handler, abstract_goto_modelt &goto_model)
const namespacet & get_namespace() const override
Returns the namespace associated with the traces.
std::unique_ptr< goto_symex_property_decidert > property_decider
virtual std::chrono::duration< double > prepare_property_decider(propertiest &properties, symex_target_equationt &equation, goto_symex_property_decidert &property_decider)
Prepare the property_decider for solving.
goto_tracet build_full_trace() const override
Builds and returns the complete trace.
virtual void run_property_decider(incremental_goto_checkert::resultt &result, propertiest &properties, goto_symex_property_decidert &property_decider, std::chrono::duration< double > solver_runtime)
Run the property_decider, which calls the SAT solver, and set the status of checked properties accord...
void output_error_witness(const goto_tracet &) override
goto_tracet build_shortest_trace() const override
Builds and returns the trace up to the first failed property.
resultt operator()(propertiest &) override
Check whether the given properties with status NOT_CHECKED, UNKNOWN or properties newly discovered by...
bool is_ready_to_decide(const symex_bmct &, const path_storaget::patht &) override
Returns whether the given path produced by symex is ready to be checked.
Uses goto-symex to generate a symex_target_equationt for each path.
virtual void final_update_properties(propertiest &properties, std::unordered_set< irep_idt > &updated_properties)
Updates the properties after having finished exploration and adds their property IDs to updated_prope...
virtual void initialize_worklist()
Adds the initial goto-symex state as a path to the worklist.
std::chrono::duration< double > symex_runtime
std::unique_ptr< path_storaget > worklist
virtual void update_properties(propertiest &properties, std::unordered_set< irep_idt > &updated_properties, const symex_target_equationt &equation)
Updates the properties from the equation and adds their property IDs to updated_properties.
virtual bool resume_path(path_storaget::patht &path)
Continues exploring the given path using goto-symex.
virtual bool has_finished_exploration(const propertiest &)
Returns whether we should stop exploring paths.
Inheriting the interface of symex_targett this class represents the SSA form of the input program as ...
Counterexample Beautification.
std::map< irep_idt, property_infot > propertiest
A map of property IDs to property infos.
Goto Checker using Single Path Symbolic Execution.
std::unordered_set< irep_idt > updated_properties
Changed properties since the last call to incremental_goto_checkert::operator()
Information saved at a conditional goto to resume execution.
symex_target_equationt equation
Bounded Model Checking for ANSI-C.