summaryrefslogtreecommitdiff
path: root/src/preprocessing/passes/quantifiers_preprocess.cpp
diff options
context:
space:
mode:
authorCaleb Donovick <cdonovick@users.noreply.github.com>2018-08-16 20:16:00 -0700
committerAndres Noetzli <andres.noetzli@gmail.com>2018-08-16 20:16:00 -0700
commit9e91bb7a36d056f576a2bd30beabb7402e43958a (patch)
treefc3601cdaef5495f4b8d806f66ff46eaf6956f00 /src/preprocessing/passes/quantifiers_preprocess.cpp
parent2539c1397877a3de647f54ec233b3f45d80484ad (diff)
Make quantifiers-preprocess preprocessing pass (#2322)
Diffstat (limited to 'src/preprocessing/passes/quantifiers_preprocess.cpp')
-rw-r--r--src/preprocessing/passes/quantifiers_preprocess.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/preprocessing/passes/quantifiers_preprocess.cpp b/src/preprocessing/passes/quantifiers_preprocess.cpp
new file mode 100644
index 000000000..e6c1557c0
--- /dev/null
+++ b/src/preprocessing/passes/quantifiers_preprocess.cpp
@@ -0,0 +1,57 @@
+/********************* */
+/*! \file quantifiers_preprocess.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Caleb Donovick
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Remove rewrite rules, apply pre-skolemization to existential
+ *quantifiers
+ **
+ **
+ ** Calls the quantifier rewriter, removing rewrite rules and applying
+ ** pre-skolemization to existential quantifiers
+ **/
+
+#include "preprocessing/passes/quantifiers_preprocess.h"
+
+#include "base/output.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/rewriter.h"
+
+namespace CVC4 {
+namespace preprocessing {
+namespace passes {
+
+using namespace CVC4::theory;
+
+QuantifiersPreprocess::QuantifiersPreprocess(PreprocessingPassContext* preprocContext)
+ : PreprocessingPass(preprocContext, "quantifiers-preprocess"){};
+
+PreprocessingPassResult QuantifiersPreprocess::applyInternal(
+ AssertionPipeline* assertionsToPreprocess)
+{
+ size_t size = assertionsToPreprocess->size();
+ for (size_t i = 0; i < size; ++i)
+ {
+ Node prev = (*assertionsToPreprocess)[i];
+ Node next = quantifiers::QuantifiersRewriter::preprocess(prev);
+ if (next != prev)
+ {
+ assertionsToPreprocess->replace(i, Rewriter::rewrite(next));
+ Trace("quantifiers-preprocess") << "*** Pre-skolemize " << prev << endl;
+ Trace("quantifiers-preprocess")
+ << " ...got " << (*assertionsToPreprocess)[i] << endl;
+ }
+ }
+
+ return PreprocessingPassResult::NO_CONFLICT;
+}
+
+} // namespace passes
+} // namespace preprocessing
+} // namespace CVC4
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback