dReal4
contractor_fixpoint.h
1 #pragma once
2 
3 #include <functional>
4 #include <ostream>
5 #include <unordered_map>
6 #include <unordered_set>
7 #include <vector>
8 
9 #include "dreal/contractor/contractor.h"
10 #include "dreal/contractor/contractor_cell.h"
11 #include "dreal/util/box.h"
12 
13 namespace dreal {
14 
15 /// Fixpoint contractor: apply C₁, ..., Cₙ until it reaches a fixpoint
16 /// (technically, until it satisfies a given termination condition).
18  public:
19  /// Deletes default constructor.
20  ContractorFixpoint() = delete;
21 
22  /// Constructs a fixpoint contractor with a termination condition
23  /// (Box × Box → Bool) and a sequence of Contractors {C₁, ..., Cₙ}.
24  ContractorFixpoint(TerminationCondition term_cond,
25  std::vector<Contractor> contractors, const Config& config);
26 
27  /// Deleted copy constructor.
28  ContractorFixpoint(const ContractorFixpoint&) = delete;
29 
30  /// Deleted move constructor.
32 
33  /// Deleted copy assign operator.
35 
36  /// Deleted move assign operator.
38 
39  /// Default destructor.
40  ~ContractorFixpoint() override = default;
41 
42  void Prune(ContractorStatus* cs) const override;
43  std::ostream& display(std::ostream& os) const override;
44 
45  private:
46  // Stop the fixed-point iteration if term_cond(old_box, new_box) is true.
47  const TerminationCondition term_cond_;
48  const std::vector<Contractor> contractors_;
49 };
50 
51 } // namespace dreal
const Config & config() const
Returns config.
Definition: contractor_cell.cc:33
Abstract base class of contractors.
Definition: contractor_cell.h:29
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
ContractorFixpoint()=delete
Deletes default constructor.
ContractorFixpoint & operator=(const ContractorFixpoint &)=delete
Deleted copy assign operator.
~ContractorFixpoint() override=default
Default destructor.
Definition: config.h:12
std::ostream & display(std::ostream &os) const override
Outputs this contractor to os.
Definition: contractor_fixpoint.cc:55
Contractor status.
Definition: contractor_status.h:13
Fixpoint contractor: apply C₁, ..., Cₙ until it reaches a fixpoint (technically, until it satisfies a given termination condition).
Definition: contractor_fixpoint.h:17
void Prune(ContractorStatus *cs) const override
Performs pruning on cs.
Definition: contractor_fixpoint.cc:33