summaryrefslogtreecommitdiff
path: root/src/theory/arith/arith_rewriter.h
diff options
context:
space:
mode:
authorTim King <taking@cs.nyu.edu>2010-10-23 21:47:47 +0000
committerTim King <taking@cs.nyu.edu>2010-10-23 21:47:47 +0000
commit237995ce0e7f47b826e26c0afb317cf5e3174879 (patch)
treeddeec96c8880ff186d350979f2a151179ae2d73f /src/theory/arith/arith_rewriter.h
parent0a3ecb598dac9e5e7416f88403dbf73d558c8739 (diff)
Removed slack.h, and arith_activity.h. Replaced IsBasicManager with the more general ArithVarDenseSet. Renamed NextArithRewriter to ArithRewriter.
Diffstat (limited to 'src/theory/arith/arith_rewriter.h')
-rw-r--r--src/theory/arith/arith_rewriter.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/theory/arith/arith_rewriter.h b/src/theory/arith/arith_rewriter.h
new file mode 100644
index 000000000..f7ef8c0c7
--- /dev/null
+++ b/src/theory/arith/arith_rewriter.h
@@ -0,0 +1,74 @@
+/********************* */
+/*! \file arith_rewriter.h
+ ** \verbatim
+ ** Original author: taking
+ ** Major contributors: mdeters
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009, 2010 The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/arith_constants.h"
+#include "theory/theory.h"
+#include "theory/arith/normal_form.h"
+
+#ifndef __CVC4__THEORY__ARITH__REWRITER_H
+#define __CVC4__THEORY__ARITH__REWRITER_H
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+class ArithRewriter{
+private:
+ ArithConstants* d_constants;
+
+ Node makeSubtractionNode(TNode l, TNode r);
+ Node makeUnaryMinusNode(TNode n);
+
+ RewriteResponse preRewriteTerm(TNode t);
+ RewriteResponse postRewriteTerm(TNode t);
+
+ RewriteResponse rewriteVariable(TNode t);
+ RewriteResponse rewriteConstant(TNode t);
+ RewriteResponse rewriteMinus(TNode t, bool pre);
+ RewriteResponse rewriteUMinus(TNode t, bool pre);
+ RewriteResponse rewriteDivByConstant(TNode t, bool pre);
+
+ RewriteResponse preRewritePlus(TNode t);
+ RewriteResponse postRewritePlus(TNode t);
+
+ RewriteResponse preRewriteMult(TNode t);
+ RewriteResponse postRewriteMult(TNode t);
+
+
+ RewriteResponse preRewriteAtom(TNode t);
+ RewriteResponse postRewriteAtom(TNode t);
+ RewriteResponse postRewriteAtomConstantRHS(TNode t);
+
+public:
+ ArithRewriter(ArithConstants* ac) : d_constants(ac) {}
+
+ RewriteResponse preRewrite(TNode n);
+ RewriteResponse postRewrite(TNode n);
+
+private:
+ bool isAtom(TNode n) const { return isRelationOperator(n.getKind()); }
+ bool isTerm(TNode n) const { return !isAtom(n); }
+};
+
+
+}; /* namesapce arith */
+}; /* namespace theory */
+}; /* namespace CVC4 */
+
+#endif /* __CVC4__THEORY__ARITH__REWRITER_H */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback