dReal4
icp_parallel.h
1 #pragma once
2 
3 #include <future>
4 #include <vector>
5 
6 #include "ThreadPool/ThreadPool.h"
7 
8 #include "dreal/contractor/contractor.h"
9 #include "dreal/contractor/contractor_status.h"
10 #include "dreal/solver/config.h"
11 #include "dreal/solver/formula_evaluator.h"
12 #include "dreal/solver/icp.h"
13 
14 namespace dreal {
15 
16 /// Class for Parallel ICP (Interval Constraint Propagation) algorithm.
17 class IcpParallel : public Icp {
18  public:
19  /// Constructs an IcpParallel based on @p config.
20  explicit IcpParallel(const Config& config);
21 
22  bool CheckSat(const Contractor& contractor,
23  const std::vector<FormulaEvaluator>& formula_evaluators,
24  ContractorStatus* cs) override;
25 
26  private:
27  ThreadPool pool_;
28 
29  std::vector<std::future<void>> results_;
30  std::vector<ContractorStatus> status_vector_;
31 };
32 
33 } // namespace dreal
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
bool CheckSat(const Contractor &contractor, const std::vector< FormulaEvaluator > &formula_evaluators, ContractorStatus *cs) override
Checks the delta-satisfiability of the current assertions.
Definition: icp_parallel.cc:161
Abstract Class for ICP (Interval Constraint Propagation) algorithm.
Definition: icp.h:16
Definition: config.h:12
Class for Parallel ICP (Interval Constraint Propagation) algorithm.
Definition: icp_parallel.h:17
Contractor status.
Definition: contractor_status.h:13
Definition: contractor.h:30
IcpParallel(const Config &config)
Constructs an IcpParallel based on config.
Definition: icp_parallel.cc:155