dReal4
counterexample_refiner.h
1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 
6 #include "dreal/optimization/nlopt_optimizer.h"
7 #include "dreal/solver/config.h"
9 #include "dreal/util/box.h"
10 
11 namespace dreal {
12 
13 /// Refines a counterexample using local optimizations. This is used
14 /// to refine counterexamples found by the forall contractor (in
15 /// contractor_forall.h).
17  public:
18  /// Constructs CounterexampleRefiner.
19  /// @param query Counterexample query. It should be either a relational
20  /// formula or a conjunction of relational formulas.
21  /// @param forall_variables universally quantified variables. They are
22  /// decision variables that we consider in the
23  /// local optimization.
24  /// @param config Configuration to use for finding counterexamples.
25  ///
26  /// @pre @p query is a conjunction.
27  CounterexampleRefiner(const Formula& query, Variables forall_variables,
28  const Config& config);
29 
30  /// Refines an initial solution and returns an improved one if possible.
31  Box Refine(Box box);
32 
33  private:
34  std::unique_ptr<NloptOptimizer> opt_;
35 
36  // Initial vector which will be fed to Nlopt. Note that the Nlopt
37  // will update this variable with a found solution.
38  std::vector<double> init_;
39 
40  std::vector<Variable> forall_vec_;
41 
42  const Variables forall_variables_;
43 };
44 } // namespace dreal
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
CounterexampleRefiner(const Formula &query, Variables forall_variables, const Config &config)
Constructs CounterexampleRefiner.
Definition: counterexample_refiner.cc:14
Represents a n-dimensional interval vector.
Definition: box.h:17
Definition: config.h:12
This is the header file that we consolidate Drake&#39;s symbolic classes and expose them inside of dreal ...
Represents a set of variables.
Definition: symbolic_variables.h:25
Refines a counterexample using local optimizations.
Definition: counterexample_refiner.h:16
Represents a symbolic form of a first-order logic formula.
Definition: symbolic_formula.h:101
Box Refine(Box box)
Refines an initial solution and returns an improved one if possible.
Definition: counterexample_refiner.cc:90