CBMC
bv_minimize.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: SAT-optimizer for minimizing expressions
4 
5 Author: Georg Weissenbacher
6 
7 Date: July 2006
8 
9 Purpose: Find a satisfying assignment that minimizes a given set
10  of symbols
11 
12 \*******************************************************************/
13 
16 
17 #ifndef CPROVER_SOLVERS_FLATTENING_BV_MINIMIZE_H
18 #define CPROVER_SOLVERS_FLATTENING_BV_MINIMIZE_H
19 
21 #include <solvers/sat/satcheck.h>
22 
23 typedef std::set<exprt> minimization_listt;
24 
26 {
27 public:
28  bv_minimizet(boolbvt &_boolbv, message_handlert &message_handler)
29  : boolbv(_boolbv), log(message_handler)
30  {
31  }
32 
33  void operator()(const minimization_listt &objectives);
34 
35 protected:
38 
39  void add_objective(
40  class prop_minimizet &prop_minimize,
41  const exprt &objective);
42 };
43 
45 {
46 public:
47  virtual const std::string description()
48  {
49  return "Bit vector minimizing SAT";
50  }
51 
56  {
57  }
58 
59  void minimize(const minimization_listt &objectives)
60  {
61  bv_minimizet bv_minimize{*this, log.get_message_handler()};
62  bv_minimize(objectives);
63  }
64 
65  satcheckt satcheck;
67 };
68 
69 #endif // CPROVER_SOLVERS_FLATTENING_BV_MINIMIZE_H
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition: message.h:154
bv_minimizet::boolbv
boolbvt & boolbv
Definition: bv_minimize.h:36
minimization_listt
std::set< exprt > minimization_listt
Definition: bv_minimize.h:23
prop_minimizet
Computes a satisfying assignment of minimal cost according to a const function using incremental SAT.
Definition: prop_minimize.h:25
bv_minimizing_dect::minimize
void minimize(const minimization_listt &objectives)
Definition: bv_minimize.h:59
bv_minimizing_dect::description
virtual const std::string description()
Definition: bv_minimize.h:47
exprt
Base class for all expressions.
Definition: expr.h:55
bv_minimizing_dect::satcheck
satcheckt satcheck
Definition: bv_minimize.h:65
bv_pointers.h
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:90
bv_minimizing_dect::bv_minimizing_dect
bv_minimizing_dect(const namespacet &_ns, message_handlert &message_handler)
Definition: bv_minimize.h:52
bv_minimizet
Definition: bv_minimize.h:25
bv_pointerst
Definition: bv_pointers.h:18
message_handlert
Definition: message.h:27
bv_minimizing_dect::log
messaget log
Definition: bv_minimize.h:66
bv_minimizet::bv_minimizet
bv_minimizet(boolbvt &_boolbv, message_handlert &message_handler)
Definition: bv_minimize.h:28
satcheck.h
messaget::get_message_handler
message_handlert & get_message_handler()
Definition: message.h:184
bv_minimizet::operator()
void operator()(const minimization_listt &objectives)
Definition: bv_minimize.cpp:55
boolbvt
Definition: boolbv.h:46
bv_minimizet::add_objective
void add_objective(class prop_minimizet &prop_minimize, const exprt &objective)
Definition: bv_minimize.cpp:13
arrayst::message_handler
message_handlert & message_handler
Definition: arrays.h:58
bv_minimizing_dect
Definition: bv_minimize.h:44
bv_minimizet::log
messaget log
Definition: bv_minimize.h:37