dReal4
contractor_seq.h
1 #pragma once
2 
3 #include <ostream>
4 #include <vector>
5 
6 #include "dreal/contractor/contractor.h"
7 #include "dreal/contractor/contractor_cell.h"
8 
9 namespace dreal {
10 
11 /// Sequential contractor: Sequentially apply C₁, ..., Cₙ.
12 class ContractorSeq : public ContractorCell {
13  public:
14  /// Delete default constructor.
15  ContractorSeq() = delete;
16 
17  /// Constructor a sequential contractor from a {C₁, ..., Cₙ}.
18  ContractorSeq(std::vector<Contractor> contractors, const Config& config);
19 
20  /// Deleted copy constructor.
21  ContractorSeq(const ContractorSeq&) = delete;
22 
23  /// Deleted move constructor.
24  ContractorSeq(ContractorSeq&&) = delete;
25 
26  /// Deleted copy assign operator.
27  ContractorSeq& operator=(const ContractorSeq&) = delete;
28 
29  /// Deleted move assign operator.
31 
32  /// Default destructor.
33  ~ContractorSeq() override = default;
34 
35  void Prune(ContractorStatus* cs) const override;
36  std::ostream& display(std::ostream& os) const override;
37 
38  const std::vector<Contractor>& contractors() const;
39 
40  private:
41  std::vector<Contractor> contractors_;
42 };
43 } // 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
~ContractorSeq() override=default
Default destructor.
void Prune(ContractorStatus *cs) const override
Performs pruning on cs.
Definition: contractor_seq.cc:28
Sequential contractor: Sequentially apply C₁, ..., Cₙ.
Definition: contractor_seq.h:12
ContractorSeq()=delete
Delete default constructor.
std::ostream & display(std::ostream &os) const override
Outputs this contractor to os.
Definition: contractor_seq.cc:37
ContractorSeq & operator=(const ContractorSeq &)=delete
Deleted copy assign operator.
Definition: config.h:12
Contractor status.
Definition: contractor_status.h:13