CBMC
inductiveness.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Inductiveness
4 
5 Author: Daniel Kroening, dkr@amazon.com
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_CPROVER_INDUCTIVENESS_H
13 #define CPROVER_CPROVER_INDUCTIVENESS_H
14 
15 #include "solver_types.h"
16 
17 class solver_optionst;
18 
20 {
21 public:
22  enum outcomet
23  {
28 
30  {
32  }
33 
35  {
37  result.work = std::move(refuted);
38  return result;
39  }
40 
42  {
44  result.work = std::move(dropped);
45  return result;
46  }
47 
48  std::optional<workt> work;
49 
50 private:
51  explicit inductiveness_resultt(outcomet __outcome) : outcome(__outcome)
52  {
53  }
54 };
55 
57  std::vector<framet> &frames,
58  const std::unordered_set<symbol_exprt, irep_hash> &address_taken,
59  const solver_optionst &,
60  const namespacet &,
61  std::vector<propertyt> &properties,
62  std::size_t property_index);
63 
64 #endif // CPROVER_CPROVER_INDUCTIVENESS_H
std::unordered_set< symbol_exprt, irep_hash > address_taken(const std::vector< exprt > &src)
static inductiveness_resultt inductive()
Definition: inductiveness.h:29
static inductiveness_resultt step_case_fail(workt dropped)
Definition: inductiveness.h:41
static inductiveness_resultt base_case_fail(workt refuted)
Definition: inductiveness.h:34
std::optional< workt > work
Definition: inductiveness.h:48
inductiveness_resultt(outcomet __outcome)
Definition: inductiveness.h:51
enum inductiveness_resultt::outcomet outcome
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:94
inductiveness_resultt inductiveness_check(std::vector< framet > &frames, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const solver_optionst &, const namespacet &, std::vector< propertyt > &properties, std::size_t property_index)