FloatingPoint: Separate out symFPU glue code. (#5492)
[cvc5.git] / src / theory / combination_care_graph.h
1 /********************* */
2 /*! \file combination_care_graph.h
3 ** \verbatim
4 ** Top contributors (to current version):
5 ** Andrew Reynolds
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
8 ** in the top-level source directory and their institutional affiliations.
9 ** All rights reserved. See the file COPYING in the top-level source
10 ** directory for licensing information.\endverbatim
11 **
12 ** \brief Management of a care graph based approach for theory combination.
13 **/
14
15 #include "cvc4_private.h"
16
17 #ifndef CVC4__THEORY__COMBINATION_CARE_GRAPH__H
18 #define CVC4__THEORY__COMBINATION_CARE_GRAPH__H
19
20 #include <vector>
21
22 #include "theory/combination_engine.h"
23
24 namespace CVC4 {
25
26 class TheoryEngine;
27
28 namespace theory {
29
30 /**
31 * Manager for doing theory combination using care graphs. This is typically
32 * done via a distributed equality engine architecture.
33 */
34 class CombinationCareGraph : public CombinationEngine
35 {
36 public:
37 CombinationCareGraph(TheoryEngine& te,
38 const std::vector<Theory*>& paraTheories,
39 ProofNodeManager* pnm);
40 ~CombinationCareGraph();
41
42 bool buildModel() override;
43 /**
44 * Combine theories using a care graph.
45 */
46 void combineTheories() override;
47 };
48
49 } // namespace theory
50 } // namespace CVC4
51
52 #endif /* CVC4__THEORY__COMBINATION_DISTRIBUTED__H */