Refactored CnfStream to work with the bv theory Bitblaster:
[cvc5.git] / src / theory / bv / theory_bv_rewriter.h
1 /********************* */
2 /*! \file theory_bv_rewriter.h
3 ** \verbatim
4 ** Original author: dejan
5 ** Major contributors: mdeters
6 ** Minor contributors (to current version): none
7 ** This file is part of the CVC4 prototype.
8 ** Copyright (c) 2009, 2010, 2011 The Analysis of Computer Systems Group (ACSys)
9 ** Courant Institute of Mathematical Sciences
10 ** New York University
11 ** See the file COPYING in the top-level source directory for licensing
12 ** information.\endverbatim
13 **
14 ** \brief [[ Add one-line brief description here ]]
15 **
16 ** [[ Add lengthier description here ]]
17 ** \todo document this file
18 **/
19
20 #include "cvc4_private.h"
21
22 #ifndef __CVC4__THEORY__BV__THEORY_BV_REWRITER_H
23 #define __CVC4__THEORY__BV__THEORY_BV_REWRITER_H
24
25 #include "theory/rewriter.h"
26
27 namespace CVC4 {
28 namespace theory {
29 namespace bv {
30
31 struct AllRewriteRules;
32
33 class TheoryBVRewriter {
34
35 static CVC4_THREADLOCAL(AllRewriteRules*) s_allRules;
36
37 public:
38
39 static RewriteResponse postRewrite(TNode node);
40
41 static inline RewriteResponse preRewrite(TNode node) {
42 return postRewrite(node);
43 }
44
45 static inline Node rewriteEquality(TNode node) {
46 return postRewrite(node).node;
47 }
48
49 static void init();
50 static void shutdown();
51 };/* class TheoryBVRewriter */
52
53 }/* CVC4::theory::bv namespace */
54 }/* CVC4::theory namespace */
55 }/* CVC4 namespace */
56
57 #endif /* __CVC4__THEORY__BV__THEORY_BV_REWRITER_H */