30 std::chrono::time_point<std::chrono::steady_clock> &_dest)
37 dest = std::chrono::steady_clock::now();
41 std::chrono::time_point<std::chrono::steady_clock> &
dest;
45 std::vector<framet> &frames,
46 const std::unordered_set<symbol_exprt, irep_hash> &
address_taken,
49 std::vector<propertyt> &properties,
50 std::size_t property_index)
52 auto &
property = properties[property_index];
54 property.start = std::chrono::steady_clock::now();
58 for(
auto &frame : frames)
62 frames[
property.frame.index].add_invariant(property.condition);
64 for(
unsigned iteration = 0;
true; iteration++)
68 property.status = propertyt::DROPPED;
73 std::cout <<
"Doing " <<
format(property.condition) <<
" iteration "
74 << iteration + 1 <<
'\n';
77 frames,
address_taken, solver_options, ns, properties, property_index);
79 switch(result.outcome)
82 property.status = propertyt::PASS;
89 property.status = propertyt::REFUTED;
95 property.status = propertyt::DROPPED;
108 const std::vector<exprt> &constraints,
118 std::cout <<
"address_taken: " <<
format(a) <<
'\n';
128 if(properties.empty())
130 std::cout <<
"\nThere are no properties to show.\n";
137 for(std::size_t i = 0; i < properties.size(); i++)
148 if(solver_options.
trace)
std::unordered_set< symbol_exprt, irep_hash > address_taken(const std::vector< exprt > &src)
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
std::chrono::time_point< std::chrono::steady_clock > & dest
take_time_resourcet(std::chrono::time_point< std::chrono::steady_clock > &_dest)
void generalization(std::vector< framet > &frames, const workt &dropped, const propertyt &property, const solver_optionst &solver_options)
inductiveness_resultt inductiveness_check(std::vector< framet > &frames, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const solver_optionst &solver_options, const namespacet &ns, std::vector< propertyt > &properties, std::size_t property_index)
solver_resultt overall_outcome(const std::vector< propertyt > &properties)
void report_properties(const std::vector< propertyt > &properties)
void report_traces(const std::vector< framet > &frames, const std::vector< propertyt > &properties, bool verbose, const namespacet &ns)
void solver(std::vector< framet > &frames, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const solver_optionst &solver_options, const namespacet &ns, std::vector< propertyt > &properties, std::size_t property_index)
Solver Progress Reporting.
std::vector< propertyt > find_properties(const std::vector< exprt > &constraints, const std::vector< framet > &frames)
void find_implications(const std::vector< exprt > &constraints, std::vector< framet > &frames)
std::vector< framet > setup_frames(const std::vector< exprt > &constraints)