dReal4
icp_seq.h
1 #pragma once
2 
3 #include <vector>
4 
5 #include "dreal/contractor/contractor.h"
6 #include "dreal/contractor/contractor_status.h"
7 #include "dreal/solver/config.h"
8 #include "dreal/solver/formula_evaluator.h"
9 #include "dreal/solver/icp.h"
10 
11 namespace dreal {
12 
13 /// Class for ICP (Interval Constraint Propagation) algorithm.
14 class IcpSeq : public Icp {
15  public:
16  /// Constructs an IcpSeq based on @p config.
17  explicit IcpSeq(const Config& config);
18 
19  bool CheckSat(const Contractor& contractor,
20  const std::vector<FormulaEvaluator>& formula_evaluators,
21  ContractorStatus* cs) override;
22 
23  private:
24  // If `stack_left_box_first_` is true, we add the left box from the
25  // branching operation to the `stack`. Otherwise, we add the right
26  // box first.
27  bool stack_left_box_first_{false};
28 };
29 
30 } // namespace dreal
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
Class for ICP (Interval Constraint Propagation) algorithm.
Definition: icp_seq.h:14
bool CheckSat(const Contractor &contractor, const std::vector< FormulaEvaluator > &formula_evaluators, ContractorStatus *cs) override
Checks the delta-satisfiability of the current assertions.
Definition: icp_seq.cc:19
Abstract Class for ICP (Interval Constraint Propagation) algorithm.
Definition: icp.h:16
Definition: config.h:12
Contractor status.
Definition: contractor_status.h:13
Definition: contractor.h:30
IcpSeq(const Config &config)
Constructs an IcpSeq based on config.
Definition: icp_seq.cc:17